2

我在这里梳理了问题,希望能找到我所处的类似情况,但找不到。我的问题涉及 iOS 5 中的 NSJSONSerialization 类,以及如何处理解析从 JSONObjectWithData:options:error: 方法返回的单个值。返回的 JSON 数据是数组中的单个值,如下所示:

[1]

数据将是 1(如上所示)或 0,具体取决于我正在使用的 Web 服务中执行的逻辑。附带说明一下,Web 服务是 WCF REST 服务。在 XCode 中,将反序列化的 JSON 分配给临时 NSArray 对象后,调试器会显示以下内容:

po parsedData

(NSArray *) $43 = 0x06e2ee70 <__NSCFArray 0x6e2ee70>( 1 )

当我尝试使用 ObjectAtIndex: 从数组中获取值时,我得到了这个:

po [parsedData objectAtIndex:0]

(id) $44 = 0x06b1dad0 1

我的问题是:0x06b1dad0之前的十六进制值 ( ) 是1什么?也许是我没有访问的键或索引(我在想我只是没有深入到数组中以获得真正的价值)?它与 JSON 的格式化方式有关吗?正如我一直在考虑的那样,我有一种格式被关闭的感觉。

我遇到的问题是我无法获取存储在 JSON 消息中的实际值——当我访问数组中的元素parsedData并将其分配给变量时,它只返回十六进制值而不是1.

转换为 NSInteger 给出了这个:

po (NSInteger)[parsedData objectAtIndex:0]

(NSInteger) $45 = 112319184 1

对此的任何见解将不胜感激。如果论坛的其他地方已经解决了这个问题,我深表歉意。

谢谢。

4

1 回答 1

1

对象可能是 NSNumber 试试这个:

[[parsedData objectAtIndex:0] intValue];
于 2012-06-19T01:41:52.553 回答