-1

The Joys of Codeからデータを読み取っています。API は、ブール変数が次のように記述されている JSON 形式でデータを返します。

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

shared: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

有効です。いつでも as から取得して、次のようBOOLに確認できますNSNumber[number boolValue]

if ([number boolValue])

また

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