属性付きの JSON オブジェクトを解析する方法に行き詰まっています。私はなんとかJSONオブジェクトを解析してきれいNSDictionary
に取得しましたが、属性を@"xxx"
テキストとして取得しました..これは好ましくありません。
私はそれが私と関係があると推測していますoptions:kNilOptions
が、それがどうあるべきかを見つけることができません。
これは JSON オブジェクトです。
{
"sport": [
{
"@description": "Fotboll",
"@id": "1",
"@name": "SOCCER"
},
{
"@description": "Ishockey",
"@id": "2",
"@name": "HOCKEY"
}
]
}
これは私の結果の辞書です:
2013-08-26 22:46:44.461 OddsApp[21971:70b] __50-[GetSportsService getSportsOnCompletion:onError:]_block_invoke [Line 43] JSON:
{
sport = (
{
"@description" = Fotboll;
"@id" = 1;
"@name" = SOCCER;
},
{
"@description" = Ishockey;
"@id" = 2;
"@name" = HOCKEY;
}
);
}
これは私のコードです:
-(void)getSportsOnCompletion:(void (^)(NSArray *sports))completionBlock onError:(MKNKErrorBlock)errorBlock
{
[self addCompletionHandler:^(MKNetworkOperation *completedOperation) {
DLog(@"%@: %@", [completedOperation isCachedResponse] ? @"Cache" : @"Response", [completedOperation responseString]);
NSError *err = nil;
id json = [NSJSONSerialization JSONObjectWithData:[completedOperation responseData]
options:kNilOptions
error:&err];
if(err)
{
errorBlock(err);
return;
}
DLog(@"JSON: \n%@", json);
NSArray *array = [(NSDictionary *)json objectForKey:@"sport"];
NSMutableArray *sports = [NSMutableArray arrayWithCapacity:array.count];
for(NSDictionary *item in array) {
[sports addObject:[Sport instanceFromDictionary:item]];
}
completionBlock([NSArray arrayWithArray:sports]);
} errorHandler:^(MKNetworkOperation *completedOperation, NSError *error) {
errorBlock(error);
}];
[ApplicationDelegate.networkEngine enqueueOperation:self forceReload:YES];
}
結果辞書として取得したいもの:
{
sport = (
{
"description" = Fotboll;
"id" = 1;
"name" = SOCCER;
},
{
"description" = Ishockey;
"id" = 2;
"name" = HOCKEY;
}
);
}