我已将JSON解析器添加到我的项目中并尝试解析JSON字符串。在大多数字符串上它可以正常工作,但有时它不是。我的第一个想法是,JSON字符串格式不正确,但我已经用几个JSON验证器检查了它们,并且它们都说它是正确的。我还检查了字符串中的一些换行符,但字符串中没有任何换行符。
这是我的代码:
// My JSON string
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
NSError *error = [[NSError alloc] init];
// result is null because of error
NSDictionary *result = [parser objectWithString:json_string error:&error];
当我查看调试器时,我在错误变量中得到以下内容:
错误Domain = org.brautaset.JSON.ErrorDomain Code = 3 UserInfo = 0x5168270“密钥:项目预期的对象值”
这表明字符串中的项目不正确,但正如我在顶部所说,我已经使用多个验证器检查了JSON字符串,并且所有人都说它没问题。
有没有人知道什么是错的?
感谢您帮助我。
答案 0 :(得分:0)
很难说,但是从查看JSON字符串“items”是使用有趣字符的第一部分,例如:
"content":"\u003cp\u003e\u003ca href\u003d
也许这会让解析器感到困惑?或者可能编码错了?
在调试器中检查json_string的值时,您看到了什么? E.g:
NSLog(json_string);
答案 1 :(得分:0)
是的,也许这就是问题所在。像\ u003c这样的字符是unicode转义符并且来自orinal流,所以编码应该没问题。有没有办法将它们转换成json兼容格式?
答案 2 :(得分:0)
我在http://code.google.com/p/touchcode/wiki/TouchJSONHowTo检查了TouchJSON解析器,并且这个解析器能够正确解析字符串。
谢谢大家的帮助。 : - )