无法解析来自谷歌的 json 响应

Posted

技术标签:

【中文标题】无法解析来自谷歌的 json 响应【英文标题】:unable to parse json response from google 【发布时间】:2011-12-09 11:18:39 【问题描述】:

我正在尝试解析来自This URL 的 Json 响应。我使用过 SBJsonParser、MTJSON 和另一个解析器,但在这三种情况下我都得到了 NULL。

apiUrlStr = @"http://maps.google.com/maps?output=dragdir&saddr=Delhi&daddr=Mumbai+to:hyderabad";
NSURL* apiUrl = [NSURL URLWithString:apiUrlStr];
NSString *apiResponse = [NSString stringWithContentsOfURL:apiUrl encoding:NSUTF8StringEncoding error:nil];

SBJsonParser *json = [[[SBJsonParser alloc] init] autorelease];
NSDictionary *dictionary = [json objectWithString:apiResponse];
NSLog(@"dictionary=%@", [json objectWithString:apiResponse]);

2011-12-09 16:59:01.226 MapWithRoutes[2523:207] 字典=(null)

请给我一些建议

【问题讨论】:

您的帖子缺少很多重要部分:mattgemmell.com/2008/12/08/what-have-you-tried @rckoenes,我不认为它缺少任何东西。 JSON 无论如何都无法解码。 这就是我的意思。我现在该怎么办?? @rckoenes 这个人几乎什么都试过了。 :) 【参考方案1】:

如果检查了您使用 JSONlint.com 提供的 url 并且 JSON 无效,则可以。因此不能被任何库解析。

如果您使用了 JSONkit,您可以在 parse 调用中提供一个 NSError 对象以查看问题所在:

NSError *error = nil;
NSDictionary *dictionary = [apiResponse objectFromJSONStringWithParseOptions:JKParseOptionNone error:&error]; 

if (!dictionary) 
   NSLog(@"Error: %@", error);
 

【讨论】:

第 1 行解析错误: tooltiphtml: " (2,13 -----^ Expecting 'STRING', '' 啊,像 tooltipHtml 这样的 JSON 对象中的键缺少字符串引号。 是的,不是合法的 JSON,因为没有引用对象键。

以上是关于无法解析来自谷歌的 json 响应的主要内容,如果未能解决你的问题,请参考以下文章

如何解析来自同一字段的多类型值的 json 响应?

如何在 Swift 中解析来自 Alamofire API 的 JSON 响应?

如何从服务器响应中解析 json?

iOS9 - NSURLSession 无法解析响应但 AlamoFire 工作

无法从 api 响应解析 json

CKEditor 无法解析 JSON 响应