「ios入門」jsonを解析する方法
1.jsonからdictへ解析
-(void)fetchedData:(NSData*)responseData {//parse out the json dataNSError* error;
NSDictionary* json =[NSJSONSerialization
JSONObjectWithData:responseData //1
options:kNilOptions
error:&error];
NSArray* latestLoans =[json objectForKey:@"loans"]; //2
NSLog(@"loans: %@", latestLoans); //3
}
2.オブジェクトからjson stringに変換
//build an info object and convert to json
NSDictionary* info =[NSDictionary dictionaryWithObjectsAndKeys:[loan objectForKey:@"name"],
@"who",
[(NSDictionary*)[loan objectForKey:@"location"]
objectForKey:@"country"],
@"where",
[NSNumber numberWithFloat: outstandingAmount],
@"what",
nil];
//convert object to data
NSData* jsonData =[NSJSONSerialization dataWithJSONObject:info
options:NSJSONWritingPrettyPrinted error:&error];
//print out the data contents
jsonSummary.text =[[NSString alloc] initWithData:jsonData
encoding:NSUTF8StringEncoding];
3.dicにjsonメソッドを追加
@interfaceNSDictionary(JSONCategories)
+(NSDictionary*)dictionaryWithContentsOfJSONURLString:(NSString*)urlAddress;
-(NSData*)toJSON;
@end
@implementationNSDictionary(JSONCategories)
+(NSDictionary*)dictionaryWithContentsOfJSONURLString:(NSString*)urlAddress{
NSData* data =[NSData dataWithContentsOfURL:[NSURL URLWithString: urlAddress]];
__autoreleasing NSError* error =nil;
id result =[NSJSONSerialization JSONObjectWithData:data
options:kNilOptions error:&error];
if(error !=nil)returnnil;
return result;
}
-(NSData*)toJSON{
NSError* error =nil;
id result =[NSJSONSerialization dataWithJSONObject:self
options:kNilOptions error:&error];
if(error !=nil)returnnil;
return result;
}@end
4.利用サンプル
NSDictionary* myInfo =[NSDictionary dictionaryWithContentsOfJSONURLString:@"http://www.yahoo.com/news.json"];
NSDictionary* information =[NSDictionary dictionaryWithObjectsAndKeys:@"orange",@"apple",@"banana",@"fig",nil];
NSData* json =[information toJSON];
5.jsonを判断
BOOL isTurnableToJSON =[NSJSONSerialization isValidJSONObject: object]