7

以下陈述是正确的,还是我遗漏了什么?

您必须检查返回对象NSJSONSerialization以查看它是字典还是数组 - 您可以拥有

data = {"name":"joe", "age":"young"}
// NSJSONSerialization returns a dictionary

data = {{"name":"joe", "age":"young"},
    {"name":"fred", "age":"not so young"}}
// returns an array

每种类型都有不同的访问方法,如果用于错误的访问方法会中断。例如:

NSMutableArray *jsonObject = [json objectAtIndex:i];
// will break if json is a dictionary

所以你必须做类似的事情 -

  id jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData
      options:NSJSONReadingMutableContainers error:&error];

    if ([jsonObjects isKindOfClass:[NSArray class]])
        NSLog(@"yes we got an Array"); // cycle thru the array elements
    else if ([jsonObjects isKindOfClass:[NSDictionary class]])
         NSLog(@"yes we got an dictionary"); // cycle thru the dictionary elements
    else
          NSLog(@"neither array nor dictionary!");

我通过堆栈溢出和Apple文档和其他地方进行了很好的查看,但找不到上述任何直接确认。

4

1 回答 1

5

如果您只是问这是否正确,是的,这是处理的安全方法jsonObjects。这也是您使用其他返回的 API 的方式id

于 2012-10-18T03:47:31.707 回答