JSON Parser错误

时间:2010-03-02 10:28:12

标签: objective-c json parsing

我已将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字符串,并且所有人都说它没问题。

有没有人知道什么是错的?

感谢您帮助我。

3 个答案:

答案 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解析器,并且这个解析器能够正确解析字符串。

谢谢大家的帮助。 : - )