当我尝试解析从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是é
角色。我在我的数据中使用它们是错误的吗?这是导致我的问题吗?
答案 0 :(得分:1)
错误几乎说明了一切,解析器不认为JSON字符串是否读取为有效的JSON。 “无法识别的前导字符”表示它发现了{
或[
字符以外的字符作为从[request responseString]
返回的字符串中的第一个字符
如果您发布原始JSON,我们可以帮助您准确指出响应的错误。
HTH
答案 1 :(得分:1)
如果request.responseString
返回<br />
,那么看起来您的服务器正在返回HTML而HTML不是JSON;)
您对JSON库的使用是正确的,它可能是您的请求或(更可能是响应)您的服务器坏了。
从好的方面来说,您不小心对您的应用进行了一些错误测试:)