-1

我使用以下代码

NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:response 
                                                     options:NSJSONReadingAllowFragments                                                           
                                                       error:&err];

首先我想添加 2 个选项NSJSONReadingAllowFragments,并且NSJSONReadingMutableContainers

如果我只NSJSONReadingMutableContainers使用代码会崩溃

现在如果响应只是字符串 true 或 false ,例如如何将 NSArray 的值与字符串“false”进行比较

我不能说例如[jsonArray objectatindex:0]

任何想法如何使我的代码足够智能,如果只有响应是对象数组或只有字符串

4

2 回答 2

1

在处理响应检查类类型之前。

id jsonObject = [NSJSONSerialization JSONObjectWithData:response 
                                                 options:NSJSONReadingAllowFragments                                                           
                                                   error:&err];

if ([jsonObject isKindOfClass:[NSArray class]]) {
    // Do stuff for array.
}
else if ([jsonObject isKindOfClass:[NSDictionary class]]) {
   // Do stuff for dictionary
}

else if ([jsonObject isKindOfClass:[NSString class]]) {
   // Do stuff for string
}
于 2013-02-16T13:18:40.333 回答
0

返回的 JSON 是一个片段,NSString它对count字符串无效。更改返回类型:

NSString *jsonString = [NSJSONSerialization JSONObjectWithData:response 
                                                     options:NSJSONReadingAllowFragments                                                           
                                                       error:&err];

NSLog(@"jsonArray: %@, length: %d", jsonString, jsonString.length);

然后对字符串做任何你想做的事情。

通常 JSON 是一个数组或字典,在这种情况下它是一个字符串,可能 JSON 格式不正确。

于 2013-02-16T13:42:37.877 回答