2

我需要在 iOS 中处理具有任意结构的 JSON 数据。

但是,NSJSONSerialization将 true/false 值转换为NSNumber.

所以我的问题是,如何判断 a 何时NSNumber从布尔值true/转换false为实际数字0/ 1

注意:我知道[NSNumber numberWithBool],但在这里,我想弄清楚何时调用它是合适的。我也知道编写自己的解析器可以解决这个问题,但我想确保在完成这条路线之前没有更简单的解决方案。

4

2 回答 2

5

解决方案是:

if ([parsedValue isKindOfClass [NSNumber class]] &&
    strcmp([parsedValue objCType], @encode(char)) == 0) {
    // parsedValue is converted from 'true' or 'false' in JSON.
}

一件奇怪的事情是一NSJSONSerielizationobjCType布尔值@encode(char)代替@encode(BOOL).

于 2013-09-27T18:16:20.403 回答
0

实际上,您不知道 NSNumber 是否“是”布尔值。但无论调用 boolValue 还是布尔值,您都会得到正确的值。如果它是一个数字,则除 0 之外的所有值都为真。

于 2013-09-27T17:52:36.483 回答