ios开发 - 如何做JSON解析器?

时间:2013-05-19 00:58:27

标签: ios json nsdictionary

我是ios开发的新手。现在我从服务器获得一个JSON文件。

我使用NSDictionary来获取对象。当我调试时,我可以得到“名字”,“地址”值。

但我不知道如何从“推荐”对象中获取所有“菜肴”元素?在java开发中,我知道推荐是一个对象,“dish”是一个数组元素。但我不知道在ios中发生了什么。

{
      "results": [
        {
          "name": "ollise",
          "address": "columbia university",
          "geo": [
            {
              "coordinates": 40
            },
            {
              "coordinates": 70
            }
          ],
          "logo": "http:\/\/a0.twimg.com\/profile_images\/3159758591\/1548f0b16181c0ea890c71b3a55653f7_normal.jpeg",
          "recommendation": [
            {
              "dish": "dish1"
            },
            {
              "dish": "dish2"
            }
          ],

        }
      ]
    }

顺便说一句,在JSON中,我将图像的URL存储在“logo”中,但是在调试时我无法获得该值。我应该使用一些特殊的格式吗?

[Restaurant setname:[Dict objectForKey:@"name"]] // I could get name
[Restaurant setlogo:[Dict objectForKey:@"logo"]]   // I can get nothing!

1 个答案:

答案 0 :(得分:2)

这是做到这一点的方法

NSDictionary *response = [NSJSONSerialization JSONObjectWithData:yourData options:NSJSONReadingMutableLeaves error:nil];
NSDictionary *results = [[response objectForKey:@"results"] objectAtIndex:0];
NSString *name = [response objectForKey:@"name"];
//... get other objects
NSArray *recommendation = [results objectForKey:@"recommendation"];
NSDictionary *recommendation1 = [recommendation objectAtIndex:0];
NSDictionary *recommendation2 = [recommendation objectAtIndex:1];
NSString *dish = [recommendation1 objectForKey@"dish"];
NSString *dish1 = [recommendation2 objectForKey@"dish"];
[Restaurant setname:name];
NSString *logo = [results objectForKey:@"logo"];
[Restaurant setlogo:logo];

results与JSON中的字典相同。将括号({})作为NSDictionary和括号([])作为NSArray处理。 dish不是数组元素,它是字典中作为数组元素的键。