Как выполнить JSON-сериализацию словаря NSDate в JSONKit

Я безуспешно пробовал это с помощью Jsonkit и сериализатора Apple JSON. Он продолжает нарушать свойство geo, которое представляет собой массив NSNumbers.

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. Как передать в функцию средство форматирования даты?

ОБНОВЛЕНИЕ 2: Решено - ок взглянул на последнюю фиксацию для 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, поэтому он может измениться в следующем официальном выпуске.

10
задан MonkeyBonkey 14 December 2011 в 13:12
поделиться