以下语句是正确的,还是我错过了某些内容?从NSJSONSerialization返回的对象可能会有所不同
你必须检查的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!");
我有一个很好看通堆栈溢出和苹果文档和其他地方,找不到上述任何直接确认。
你没有提到你的代码出现了什么问题。 –
问题是,如果您返回字典并使用数组方法访问它,则会引发异常。我认为你需要检查返回对象类型来解决这个问题,但是要确认这是正确的方法。 – user1705452