如何使用NSJSONSerialization从false/true告诉0/1?

Dan*_*uan 2 cocoa-touch objective-c ios nsjsonserialization

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

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

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

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

Dan*_*uan 5

解决方案是:

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

一个奇怪的事情是NSJSONSerielization设置objCType一个布尔值@encode(char)而不是@encode(BOOL).