Jsonkit と Apple の JSON シリアライザーを使用してこれを試してみましたが、うまくいきませんでした。NSNumbers の nsarray である geo プロパティを壊し続けます。
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];
更新:エラーを確認すると、NSArray ではなく、NSDate が失敗します。日付フォーマッタを関数に渡すにはどうすればよいですか?
更新 2: 解決済み-ok は 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 であるため、次の公式リリースで変更される可能性があることに注意してください。