在iPhone SDK上进行JSON解析

Cyb*_*erK 0 iphone xcode json objective-c ios

我有一个json:

[
    {
        "id"        : 42422422,
        "created"   : 1329684013,
        "name"          : "Test"
    },
    {
        "id"        : 42422423,
        "created"   : 1329684015,
        "name"          : "Test 123"
    },
        {
          ...
        }
]
Run Code Online (Sandbox Code Playgroud)

解析这个问题,但是当网络服务器出错时,会返回此JSON:

{
    "error" : {
        "code"      : "511",
        "message"   : "JSON error",
        "extra" : {
            "some"      : "text",
            "someextra" : "text"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过用这个:

if ([jsonArray valueForKey:@"error"] != nil) {
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为如果我输出的值是'null'的数组

我怎么检查这个?(我知道我可以使用NSRange,但我认为必须有更好的方法吗?

我像这样解析JSON:

NSDictionary *jsonArray = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error: &e]; 
Run Code Online (Sandbox Code Playgroud)

responseData来自NSURLConnection的connectionDidFinishLoading方法.

omz*_*omz 7

你应该先检查你的结果是数组还是字典.

if ([jsonArray isKindOfClass:[NSArray class]]) {
     //process results
} else if ([jsonArray isKindOfClass:[NSDictionary class]]) {
    NSDictionary *errorInfo = [(NSDictionary *)jsonArray objectForKey:@"error"];
    //handle error...
}
Run Code Online (Sandbox Code Playgroud)