【问题标题】:iOS JSONKit objectWithData returns nulliOS JSONKit objectWithData 返回 null
【发布时间】:2012-09-29 20:35:39
【问题描述】:

我正在使用 JSONKit 解析 JSON 字符串,由于某种原因,当尝试将 JSON 字符串分配给 NSDictionary 时它返回 null


JSONDecoder *jsonDecoder = [[JSONDecoder alloc] initWithParseOptions:JKParseOptionNone];        
NSData *jsonData = [NSData dataWithBytes:[jsonString UTF8String] length:[jsonString length]];
NSDictionary *tempDict = [jsonDecoder objectWithData:jsonData];

jsonString 保存内容,tempDict 等于NULL

谢谢!

【问题讨论】:

  • 您能否提供一些导致问题的输入?只是为了验证,jsonData 不是nil,而是tempDict 是?

标签: iphone objective-c ios json jsonkit


【解决方案1】:

如果您想支持 4.x,请不要使用 NSJSONSerialization。它仅在 5.0 中可用。

相反,您只需要像这样使用JSONKit

 NSDictionary *tempDict = [jsonString objectFromJSONString];

您无需将 JSON 字符串转换为 NSData 即可对其进行序列化。

【讨论】:

    【解决方案2】:

    我不确定,但您需要检查您的 json 是否是有效的 json,为此您可以使用 http://jsonlint.com/。由于 json 无效,我有时会遇到类似的问题。希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      为什么要使用 jsonKit? iOS 有一个非常好的 JSONSerialization 类...你可以这样使用它:

      NSData *returnData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
      NSError *jsonParsingError = nil;
      
      NSDictionary *returnDictionary = [NSJSONSerialization JSONObjectWithData:returnData options:0 error:&jsonParsingError];
      
      if (!jsonParsingError) {
      
          //Do your stuff here
      
      }
      

      祝你好运!

      【讨论】:

      • 谢谢,但 NSJSONSerialization 可从 iOS 5 获得,我正在使用 JSONKit,因为它支持之前的 iOS 版本
      【解决方案4】:

      使用 NSJSONSerialization 怎么样?

      NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
      NSDictionary * tempDict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
      

      【讨论】:

      • 使用不同的库不是问题的解决方案。
      猜你喜欢
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多