gpt4 book ai didi

objective-c - 我的应用程序未解析 JSON 响应

转载 作者:行者123 更新时间:2023-11-28 20:40:00 25 4
gpt4 key购买 nike

当我尝试解析 JSON 响应时,我得到一个空响应和这个错误:

JSONValue failed. Error trace is: (
"Error Domain=org.brautaset.JSON.ErrorDomain Code=11 \"Unexpected end of string\" UserInfo=0x797c420 {NSLocalizedDescription=Unexpected end of string}"
)

这就是我尝试发送 JSON 请求以及我尝试解析其响应的方式:

发送 JSON 请求:

- (void)viewWillAppear:(BOOL)animated{
//Specify the adress of the webservice (url)
NSURL *url = [NSURL URLWithString:@"http://xxxxxxxxxxx.com/webservices/"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
NSString *jsonStringArray=[aMutableArray JSONRepresentation];

NSLog(@"-------------");
NSLog(@"%@",jsonStringArray);
NSLog(@"-------------");
[request setPostValue:jsonStringArray forKey:@"liste_des_themes"];
NSLog(@"The response string is: %@",request.responseString);
[request setDelegate:self];
[request startAsynchronous];
}

对于 NSLog,我在发送它之前尝试显示 json 字符串,我得到了正确的 JSON 格式:

NSLog(@"%@",jsonStringArray);//["Mairie","Préfectures et sous-préfectures"]

现在对于第二个 NSLog,我得到了 null:

NSLog(@"The response string is: %@",request.responseString);//The response string is: (null)

解析响应时:

    -(void)requestFinished:(ASIHTTPRequest *)request
{
if(request.responseStatusCode==200)
{
NSLog(@"This block gets called, response code is 200");//This block gets called, response code is 200
//parse the response
NSLog(@"The response string is: %@",request.responseString);

NSString *responseString=[request responseString];
NSDictionary *responseDict=[responseString JSONValue];
}
}

对于试图显示响应字符串的 NSLog,我什么也没得到,既不是 null,也不是正确的值:

         NSLog(@"The response string is: %@",request.responseString);
//The response string is:

在那之后,我得到了这个跟踪错误:

    JSONValue failed. Error trace is: (
"Error Domain=org.brautaset.JSON.ErrorDomain Code=11 \"Unexpected end of string\" UserInfo=0x797c420 {NSLocalizedDescription=Unexpected end of string}"
)

你能帮我吗?提前谢谢。

最佳答案

我假设您无法控制 Web 服务,因此告诉您对此做些什么通常是行不通的。

1) 首先,确保 JSON 响应看起来正确。您可以将其下载到浏览器中并查看它看起来没问题吗?

2) 如果看起来没问题,是否可以通过 JSON lint 测试? (尝试 jsonlint.com,并将其插入其中。)

3) 如果它通过了 (1) 和 (2),则查看它在返回的数据响应中是否有任何前导空值。我发现我自己的代码就是这种情况。如果不首先删除前导空值,我无法直接使用它。

不幸的是,我没有在我的 mac 上复制我用来解决这个问题的代码。但这是一个真正的问题,解决方案是删除空值(在我的案例中有数千个空值。)字符串中的空值看起来像字符串终止符,因此前导空值隐藏了真正的内容。

关于objective-c - 我的应用程序未解析 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9020807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com