繁体   English   中英

ios中的JSON解析错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM