Я пробовал это с помощью Jsonkit и JSON-сериализатора Apple без везения. Он продолжает ломать свойство geo, которое является nsarray из NSNumbers.Как JSON сериализовать словарь NSDate в JSONKit
Post* p = [[Post alloc] init];
p.uname = @"mike";
p.likes =[NSNumber numberWithInt:1];
p.geo = [[NSArray alloc] initWithObjects:[NSNumber numberWithFloat:37.78583], [NSNumber numberWithFloat:-122.406417], nil ];
p.place = @"New York City";
p.caption = @"A test caption";
p.date = [NSDate date];
NSError* error = nil;
NSString* stuff = [[p getDictionary] JSONStringWithOptions:JKParseOptionNone error:&error];
ОБНОВЛЕНИЕ: Проверка на ошибке NSDate, что он не работает, а не NSArray. Как передать форматор даты в функцию?
UPDATE 2: Solved- нормально смотрел на последний коммит для jsonkit и увидел, что вы могли бы сделать это:
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];
NSString* result = [p.dictionary JSONStringWithOptions:JKSerializeOptionNone serializeUnsupportedClassesUsingBlock:^id(id object) {
if([object isKindOfClass:[NSDate class]]) { return([outputFormatter stringFromDate:object]); }
return(nil);
} error:nil];
, который, кажется, работает, но обратите внимание, что эта функция для JSONKit является WIP, так что может измениться в следующем официальном выпуске.
Что вы имеете в виду, когда вы говорите, "он продолжает ломать"? Это крушение? Разве это не создает строки JSON, как вы ожидаете? Что вы видите? –
Я бы предложил попытаться использовать JSONKit или JSON-сериализатор в iOS5 вместо того, чтобы выкладывать собственный парсер так, чтобы говорить. Какие проблемы у вас были с JSONKit? –
Я пробовал приведенный выше код с помощью JSONKit, в возврате nil, когда я вызываю JSONDATA и JSONString. Если я оставил NSArray, он отлично работает. Если я сериализую только nsarray, он отлично работает, возвращая правильную сериализацию ... это только кажется проблемой, если у меня есть nsarray как значение в nsdictionary, и я пытаюсь сериализовать nsdictionary. – MonkeyBonkey