JSONValue不解析JSON响应

时间:2012-01-20 13:53:59

标签: ios json

当我尝试解析从Web服务返回的响应时,我得到了这个堆栈:

JSONValue failed. Error trace is: (
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Unrecognised leading character\" UserInfo=0x6e76c30 {NSLocalizedDescription=Unrecognised leading character}"
)

我的代码是这样的:

if(request.responseStatusCode==200)
    {   
        NSLog(@"so far, this block of code works");//this log is displayed
        //parse the response
        NSArray *array=[[request responseString]JSONValue];
               //processing the array and do whatever

在这个thread他们谈论旧版本的JSON库以及如何更新它,请帮我弄清楚我该怎么办。

修改

在尝试解析响应时,我想知道服务器返回的原因,所以NSLog就像这样:

if(request.responseStatusCode==200)
        {   
               NSLog(@"the request is %@", request.responseString);
            //parse the response
            NSArray *array=[[request responseString]JSONValue];
                   //processing the array and do whatever

给我这个堆栈:

the request is <br />
<b>Warning</b>:  implode() [<a href='function.implode'>function.implode</a>]: Invalid arguments passed in <b>/homepages/25/xxxx/htdocs/my app/webservices/index.php</b> on line <b>39</b><br />
<br />
<b>Fatal error</b>:  Call to undefined function sendResponse() in <b>/homepages/25/xxxxx/htdocs/my app/webservices/index.php</b> on line <b>57</b><br />
2012-01-20 15:10:45.491 my-iPhone-application[882:11603] -JSONValue failed. Error trace is: (
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Unrecognised leading character\" UserInfo=0x6ebd450 {NSLocalizedDescription=Unrecognised leading character}"
)

编辑2:

我的应用程序发送了一个应该在Web服务中接收和处理的数组。所以接收数组的一个例子是:

(
    Mairie,
    \"Pr\\U00e9fectures et sous-pr\\U00e9fectures\",
    \"Auto-\\U00e9cole\"
) 

奇怪的反斜杠和00是é角色。我在我的数据中使用它们是错误的吗?这是导致我的问题吗?

2 个答案:

答案 0 :(得分:1)

错误几乎说明了一切,解析器不认为JSON字符串是否读取为有效的JSON。 “无法识别的前导字符”表示它发现了{[字符以外的字符作为从[request responseString]返回的字符串中的第一个字符

如果您发布原始JSON,我们可以帮助您准确指出响应的错误。

HTH

答案 1 :(得分:1)

如果request.responseString返回<br />,那么看起来您的服务器正在返回HTML而HTML不是JSON;)

您对JSON库的使用是正确的,它可能是您的请求或(更可能是响应)您的服务器坏了。

从好的方面来说,您不小心对您的应用进行了一些错误测试:)