没有根对象的Json解析

时间:2013-07-24 09:19:28

标签: iphone ios json

我想像这样解析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]);

     }

2 个答案:

答案 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