【问题标题】:Json Boolean value expression issueJson 布尔值表达式问题
【发布时间】:2013-07-23 11:35:11
【问题描述】:

我的回复:(JSON)

NSString *responseString = [[NSString alloc] initWithData:responseData4 encoding:NSUTF8StringEncoding];

NSLog(@"responseString... %@",responseString);

 {"AT":"dMaOtJxV0EgAAAAAAAAAAAAAAAAAAAAA","DId":320,"EMs":null,"Em":null,"LGT":null,"OS":"Success","PWD":"DEBC0C7321EF1386F7F22A3D8BE754C9FF04A596","SId":0,"Sku":"Director","UId":1664,"UN":"s1","COM":null,"DN":null,"DOS":null,"EA":"s+1@gmail.com","FN":"s","IsCon":true,"IsLT":true,"IsPU":false,"IsSuc":false,"IsSync":true,"IsTri":false,"LLD":"\/Date(-62135578800000-0500)\/","LN":"k","MOD":null,"NDD":"\/Date(1376971200000-0400)\/","NDDS":"8\/20\/2013","PN":"(324) 325-4353","SD":"s","SLT":"HBoY7mHJ","STs":"EN","UQId":null,"US":3,"Ver":null}

我必须在这里获取 IsPU,IsCon 标记值。

然后我写了类似的代码

NSError *error;

id jsonMain = [NSJSONSerialization JSONObjectWithData:responseData4 options:kNilOptions error:&error];

NSString *IsPUstring = [jsonMain objectForKey:@"IsPU"];

NSString *IsConstring = [jsonMain objectForKey:@"IsCon"];


NSLog(@"IsPUstring...%@",IsPUstring);

NSLog(@"IsConstring...%@",IsConstring);

输出:

IsPUstring... 0

IsConstring... 1

我的问题:

原始标签值:

"IsCon":true,"IsPU":false

但是在 JSON 序列化之后它变成了 0 和 1 对吧?

有什么方法可以在这里获取我的原始值,例如 true 或 false?

【问题讨论】:

  • 我可以知道得到“真”或“假”的必要性吗???
  • 如果你想要 'true' 或 'false' 只需使用条件 if([IsPUstring isequaltostring:@"0"])IsPUstring=@"false";其余的都是这样。

标签: iphone ios objective-c json ios6


【解决方案1】:

你可以像下面这样得到它..

 BOOL  IsPUstring  = [[jsonMain objectForKey:@"IsPU"] boolValue];
 BOOL IsConstring = [[jsonMain objectForKey:@"IsCon"] boolValue];

NSLog(@"IsPUstring...%d",IsPUstring);

NSLog(@"IsConstring...%d",IsConstring);

如果您想以NSString 格式获取此值,那么您也可以使用下面的代码..

NSLog(@"IsPUstring... %s", IsPUstring ? "true" : "false");
NSLog(@"IsConstring... %s", IsConstring ? "true" : "false");

【讨论】:

    【解决方案2】:

    0 和 1 NO 和 YES。 JSON 数据中的布尔对象将被转换为 NSNumber*,NSNumber 方法 [aNumber boolValue] 将返回 YES 和 NO。

    现在,一个值为 0、1 或 2 的整数也将转换为 NSNumber*,对于这三个值,[aNumber boolValue] 将返回 NO 为 0,YES 为 1,YES 为 2 (对于任何不为零的数字,它将返回 YES)。

    如果真要区分false/true和0/1:

    NSNumber* isPU = jsonMain [@"IsPU"];
    
    if (isPU == (id) kCFBooleanFalse) { ... } // isPU is false and not 0 or "0"
    else if (isPU == (id) kCFBooleanTrue) { ... } // isPU is true and not 1 or "1"
    else { ... } // isPU is something else. 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 2015-08-18
      • 2011-05-11
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多