我的应用程序返回一个NSMutableData *receivedData
.
我选择使用 NSJSONSerialization 来解析它,假设它是最简单的。我在试图弄清楚该怎么做时遇到了极大的麻烦。我是 Objective-C 的新手,来自 Java 背景。
在 Java 中,我使用 gson 将 JSON 解析为一个可以轻松使用的数组。我在这里真的很挣扎。
我当前解析 JSON 的代码是:
NSError *e = nil;
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData: receivedData options: NSJSONReadingMutableContainers error: &e];
if (!jsonArray) {
NSLog(@"Error parsing JSON: %@", e);
} else {
for(NSDictionary *item in jsonArray) {
NSLog(@"Item: %@", item);
}
}
正如互联网上某人提供的那样。这可以工作并将两个项目打印到 NSLog。result
和header
。这是 JSON 的外观:
{
"header":{
"session":"sessionid",
"serviceVersion":"1",
"prefetchEnabled":true
},
"result":"50ce82401e826"
}
但是,如果出现错误,JSON 也可能如下所示:
{
"header":{
"session":"sessionid",
"serviceVersion":"1",
"prefetchEnabled":true
},
"fault":{
"code":0,
"message":"someErrorCode"
}
}
我希望代码如何工作:
- 检查是否存在“故障”对象
- 如果有,打印 fault.code 和 fault.message 到 NSLog
- 如果没有,我知道我的 JSON 包含结果而不是错误
- 将结果的值打印到 NSLog
但我无法终生弄清楚如何处理它。有人可以给我一些指示吗?