2010-03-15 19 views
2

我使用的是来自http://code.google.com/p/json-framework的JSON框架。下面的JSON失败,此错误:为什么这个JSON仅在iPhone中失败?

-JSONValue failed. Error trace is: (
Error Domain=org.brautaset.JSON.ErrorDomain Code=5 UserInfo=0x124a20 "Unescaped control character '0xd'", 
Error Domain=org.brautaset.JSON.ErrorDomain Code=3 UserInfo=0x11bc20 "Object value expected for key: Phone", 
Error Domain=org.brautaset.JSON.ErrorDomain Code=3 UserInfo=0x1ac6e0 "Expected value while parsing array" 

JSON被解析:

[ 
    { 
    "id" :"2422", 
    "name" :"BusinessA", 
    "address" :"7100 U.S. 50", 
    "lat" :"38.342945", 
    "lng" :"-90.390701", 
    "CityId" :"11", 
    "StateId" :"38", 
    "CategoryId" :"1", 
    "Phone" :"(200) 200-2000", 
    "zip" :"00010" 
    } 
] 

我觉得0xd中表示马车。当我把上面的JSON放入TextWrangler时,我看不到任何回车。我通过在调试器中执行“po myjson”来获得JSON。它通过了这个验证器:http://json.parser.online.fr/。任何人都可以看到问题可能是什么?

+0

'od -c'对输出有什么要说的? – 2010-03-15 01:57:53

+0

什么是od -c? – 4thSpace 2010-03-15 02:36:51

+0

以及关键“电话”的值... – stefanB 2010-03-15 03:24:19

回答

1

您可能会从Web服务或以意外的编码获取错误的数据。使用po myjson(或NSLog()),然后复制粘贴将省略任何不可打印的字符,因此即使您确实有一个零星的0xd,基于Web的验证器也不会看到它。

您应该尝试类似[myjson rangeOfString:@"\15"]来检查0xd(八进制15等于十六进制0xd)。