我想像这样解析json:
我想获得特别婚礼或仪式的Photo_name。
我想保留婚礼的照片名称和其他一系列照片名称。
{
-f1: {
Photos: {
Wedding: [
{
Photo_id: "99",
Photo_name: "2WLB4cSJtg.jpg",
User_id: "11",
Date: "0000-00-00"
},
{
Photo_id: "97",
Photo_name: "EjOCbkWwmF.jpg",
User_id: "11",
Date: "0000-00-00"
},
{
Photo_id: "90",
Photo_name:"18e7af197f2060ad1c58d95c38f16ecc.jpg",
User_id: "11",
Date: "2013-07-24"
}
],
Ceremony: [
{
Photo_id: "96",
Photo_name: "hTWiAQUDnL.jpg",
User_id: "11",
Date: "0000-00-00"
},
{
Photo_id: "92",
Photo_name: "529753_425904027490910_737057237_n.jpg",
User_id: "11",
Date: "2013-07-24"
},
{
Photo_id: "93",
Photo_name: "yCbKG8txQY.jpg",
User_id: "11",
Date: "0000-00-00"
},
{
Photo_id: "94",
Photo_name: "k9goxnlscT.jpg",
User_id: "11",
Date: "0000-00-00"
},
]
}
}
}
此代码给我键f1并将json的所有内容显示为值:
NSString *str=[[NSString alloc]initWithBytes:[webdata mutableBytes] length:[webdata length] encoding:NSUTF8StringEncoding];
NSMutableDictionary *result = [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];
for (id thekey in result) {
NSLog(@"KEY %@ VALUE %@",thekey,[result valueForKey:thekey]);
}
答案 0 :(得分:1)
NSString *str=[[NSString alloc]initWithBytes:[webdata mutableBytes] length:[webdata length] encoding:NSUTF8StringEncoding];
NSMutableDictionary *result = [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];
NSArray *weddingPhotos = [[[[result valueForKey:@"f1"] valueForKey:@"Photos"] valueForKey:@"Wedding"] valueForKeyPath:@"Photo_name"];
NSLog(@"%@",weddingPhotos);
NSArray *ceremonyPhotos = [[[[result valueForKey:@"f1"] valueForKey:@"Photos"] valueForKey:@"Ceremony"] valueForKeyPath:@"Photo_name"];
NSLog(@"%@",ceremonyPhotos);
试试这个。 (未经过测试)
答案 1 :(得分:0)
简单地说{}是一个字典而[]给你一个NSArray.So你必须通过valueForKey:
方法
所以
NSDictionary *dict = [jsonData objectForKey:@"-f1"] ;
NSDictionary *photosDict = [dict objectForKey:@"Photos"] ;
NSArray *weddingPhotos = [photosDict objectForKey:@"Wedding"] ; // array of dict