[英]JSON Parsing Error in ios
我想从某个 url 中获取一些数据并在 nslog 中打印结果。 我正在传递 URl 并且只想在日志中获取结果。 我用过这个代码:
-(void)GETJSONDATA
{
NSString*lu=@"tmp";
NSString *requestString = [[NSString alloc]init];
// [[NSUserDefaults standardUserDefaults] setValue:nil forKey:@"WRONGANSWER"];
NSLog(@"request string:%@",requestString);
NSData *requestData = [NSData dataWithBytes: [requestString UTF8String] length: [requestString length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:
[NSURL URLWithString: @"http://assessments.tlisc.org.au/webservices/questions/getbytaskpart.php?jsoncallback=?&token=1726204214321678|xTAieBBJoDaWmBsG1stxfq4zLO4&taskpartid=1"]];
NSString *postLength = [NSString stringWithFormat:@"%d", [requestData length]];
[request setHTTPMethod: @"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:requestData];
NSError *respError = nil;
NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: &respError ];
if (respError)
{
// NSString *msg = [NSString stringWithFormat:@"Connection failed! Error - %@ %@",
// [respError localizedDescription],
// [[respError userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Test" message:@"check your network connection" delegate:self cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}
else
{
NSString *responseString = [[NSString alloc] initWithData:returnData encoding: NSUTF8StringEncoding];
NSLog(@"Resp : %@",responseString);
NSDictionary *results = [responseString JSONValue];
NSLog(@"results=%@",results);
}
}
它向我展示了这个错误:
-JSONValue failed. Error trace is: (
"Error Domain=org.brautaset.JSON.ErrorDomain Code=11 \"Unexpected end of string\" UserInfo=0x6a42be0 {NSLocalizedDescription=Unexpected end of string}"
有人可以指出我的错误吗? 在响应字符串中,它显示空值。 我不知道实际的错误。
它在浏览器中工作正常,但是当我解析它时,它显示了这个错误......无论如何我可以通过它修改 url 并获得结果......我已经用不同的 url 检查了我的代码。它工作正常..
正如错误告诉您的:传入的 JSON 格式不正确。 向您正在使用的 URL 发出一个简单的 GET 请求,我得到一个格式错误的 JSON,即它不是有效的 JSON。 我猜将数据发布到此 URL 会返回与其中的实际数据相同的格式(不是null )。
利用一个简单的JSON Validator ,我得到了这个
第 5 行解析错误:... "Description": "\\n\\tQuestion Numbe ---------------^ 期望 'STRING', 'NUMBER ', 'NULL', 'TRUE', 'FALSE', '{', '['
我想我使用的库与您在这里使用的库相同,但由于某些无法解释的原因,它在特定的 google api 上失败了,有时会得到结果但通常会失败。 代码似乎没有任何问题。
最后,我使用了内置的 NSJSONSerialization ( http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html ) 对象,此后它没有失败。 我什至不知道内置了 JSON 支持(显然来自 iOS5)。
我运行了两个调用并并排处理它们,外部库不断失败。 内部方法运行良好。
由于我是初学者并且文档(以上)并没有真正帮助我,我使用本教程http://www.raywenderlich.com/5492/working-with-json-in-ios-5来获取我的头围着它
在浏览器中检查您的网址。 看看结果。 结果的结构应该与 JSON 相同。 如果 json 的开头有任何其他额外的词,则表示。 你应该检查你的php代码。
您的字符串中有 HTML 标签。 段落标记如
<p> and </p>
而这些都没有正确转义。 但是,我不知道小于号和大于号是否需要在 JSON 中转义,但显然他们正在制造问题。 使用谷歌我找到了两者的陈述。 然而,一些网站建议逃逸<
用\<
和>
与\>
。 这应该够了吧。
我试图从验证输出http://assessments.tlisc.org.au/webservices/questions/getbytaskpart.php?jsoncallback=?&token=1726204214321678|xTAieBBJoDaWmBsG1stxfq4zLO4&taskpartid=1这似乎是有效的,虽然如果<p>
和</p>
不是由 Bowser 解释的。 (我正在查看“页面源”)。 但是,当转义时,字符串仍然有效并编码为相同的结果。
如果这不是您的问题,请提供您的输出
NSLog(@"Resp : %@",responseString);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.