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
使用 JSONKit 在 iOS 中解析 JSON 数组 - 没有 ObjectForKey 标记的数组?
iOS关于JSONKit解析Unicode字符内容出错,问题出在u0000