iOS JSONKit objectWithData 返回 null

Posted

技术标签:

【中文标题】iOS JSONKit objectWithData 返回 null【英文标题】:iOS JSONKit objectWithData returns 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 是? 【参考方案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];

【讨论】:

使用不同的库不是问题的解决方案。

以上是关于iOS JSONKit objectWithData 返回 null的主要内容,如果未能解决你的问题,请参考以下文章

iOS JSONKit objectWithData 返回 null

IOS 网络浅析-(七 JSON解析之三方JSONKit)

使用 JSONKit 在 iOS 中解析 JSON 数组 - 没有 ObjectForKey 标记的数组?

iOS关于JSONKit解析Unicode字符内容出错,问题出在u0000

JSONKit 崩溃:iPad 视网膜 64 位设备模拟器中的 iOS 7 Xcode 5.1

适用于 iPhone 应用程序的 JSONKit?