【问题标题】:NSJSONSerialization does not return data, but its showing data in json viewerNSJSONSerialization 不返回数据,但它在 json 查看器中显示数据
【发布时间】:2013-07-11 12:34:34
【问题描述】:

NSJSONSerialization 当我尝试从服务器实现特定 api 时返回 null,但服务器中的其他 api 工作正常,当我在 web 中尝试 api 时它返回 json 类型的数据,我已经在 json 中检查了它查看器也可以,而且效果很好,NSData 也返回了一些数据,有人可以帮我解决吗?

NSString *urlString = @"url";        
NSURL *url = [NSURL URLWithString:urlString];
NSError *error = nil;
NSData *data = [NSData dataWithContentsOfURL:url];
_dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];

if(error != nil){

    NSLog(@"JSON Error: %@", error);
    return;
}

上面写的代码我试过了。

---已编辑-- 由于这是服务器端的问题,因为服务器正在发送无效字符以及响应,因此在 json 验证器中它正在传递但不在实际 Program 中,因此关闭了问题。

【问题讨论】:

  • 感谢大家的有用回答。实际上问题出在服务器上,他们在 json 中添加了一个无效字符。
  • 我已经使用[NSJSONSerialization isValidJson] 进行了检查,它告诉天气返回的 json 是否有效。
  • 返回什么错误??
  • 我投票决定将此问题作为离题结束,因为问题不在代码中,而在作为响应的服务器数据中。

标签: iphone ios objective-c nsdata nsjsonserialization


【解决方案1】:

问题在于您的 URL 中的 转义序列,而您没有转义它们。你必须正确地转义这些序列。

NSString *urlString = @"url";        
NSString *encodedString = [urlString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:encodedString];
  1. 看看Documentation
  2. 还要检查Escape Sequences

试试这个:

NSString *urlString = @"url";        
NSURL *myUrl = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

【讨论】:

  • @vinay.bn :如果您的 URL 在浏览器中有效,而在 xcode 中无效,则仅是转义序列的问题。还要检查文档。
  • @vinay.bn:看看我的更新部分。
  • :url不包含任何转义字符。
  • @vinay.bn:这意味着您的 JSON 数据格式不正确。
  • @vinary.bn 您能否将答案标记为正确?你给 Vin 代表是公平的,因为他提供了很多帮助,并且由于他的帮助你解决了你的问题,所以我认为在一个多月后它会更合适......
【解决方案2】:

创建一个NSURLConnection 并使用NSURLRequest 请求JSON,因为我不认为“json”是一个包含内容的实际文件,因此您可以使用dataWithContentsOfURL:

【讨论】:

  • ya 它被实际 url 取代,我尝试将 0 切换到 NSJSONReadingMutableContainers 但结果相同。
  • 检查 NSLog 以查看您收到的内容。
  • 我尝试了您提供的 NSlog 选项,但它返回 null,请问我知道这是什么原因,是从服务器端还是在我的编码中?
  • 我认为您没有正确收到 NSData ,我认为您应该使用 NSURLConnnection 并向服务器发出请求。
  • 它将是代表Error MessageXML Code
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
  • 2012-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-30
相关资源
最近更新 更多