-1

我正在阅读来自The Joys of Code 的数据。API 以 JSON 格式返回数据,其中布尔变量的写法如下:

{ "obj" :
   { 
      "sharing":false,
      "modified":"tuesday"
   }
}

请注意,sharing:false单词false周围没有引号。然后我使用 NSJSONSerialization 将此 JSON 解析为一个对象(本例中为 NSDictionary)。

问题是, "sharing":false 或 "sharing":true 总是创建一个共享 = 0 的对象,其中 0 是一个值为 0 的 NSNumber。

我的问题是这是否是有效的 JSON 并且 NSJSONSerialization 无法正常工作,或者原始 JSON 是否无效。

4

2 回答 2

2

NSJSONSerialization 对我来说可以很好地使用上面的 json(输入 false 和 true):

NSData *json = [@"{ \"obj\" : \
                { \
                \"sharing\":false, \
                \"modified\":\"tuesday\" \
                } \
                }" dataUsingEncoding:NSUTF8StringEncoding];
id dict = [NSJSONSerialization JSONObjectWithData:json options:0 error:nil];
id sharing = dict [@"obj"][@"sharing"];
NSLog(@"%d", [sharing boolValue]);

json = [@"{ \"obj\" : \
                { \
                \"sharing\":true, \
                \"modified\":\"tuesday\" \
                } \
                }" dataUsingEncoding:NSUTF8StringEncoding];
dict = [NSJSONSerialization JSONObjectWithData:json options:0 error:nil];
sharing = dict [@"obj"][@"sharing"];
NSLog(@"%d", [sharing boolValue]);
于 2012-12-09T10:11:00.443 回答
0

这是有效的。你总是可以BOOLNSNumberas中获取[number boolValue]并检查它

if ([number boolValue])

或者

if ([number boolValue] == YES)
于 2012-12-09T10:00:07.003 回答