【发布时间】:2012-05-19 09:37:30
【问题描述】:
我想在 iOS 的 SBJSON 框架中解析来自以下 url 的 json 输出 http://maps.google.com/maps?q=school&mrt=yp&sll=13.006389,80.2575&output=json
while(1);{title:"school - Google Maps",url:"/maps?q=school\x26mrt=yp\x26sll=13.006389,80.2575\x26ie=UTF8\x26hq=school\x26hnear=",urlViewport:false,ei:"RCu3T4eeMqSiiAe7k-yZDQ",form:{selected:"q",q:{q:"school",mrt:"yp",what:"school",near:""},d:{saddr:"",daddr:"",dfaddr:""},geocode:""},
我正在使用http://www.bodurov.com/JsonFormatter/在线阅读。
在 ASIHttpRequest 响应方法中,我从响应中删除了 while(1);
NSString *responseString = [[request resonseString]substringFromIndex:9]; //to remove while(1)
SBJSONParser * parser = [[SBJSONParser alloc]init];
NSDictionary *jsonDict = (NSDictionary*)[parser objectFromString:responseString];
NSLog(@"%@",jsonDict) // prints null
// [responseString JSONValue] also reports error
我猜没有双引号的 JSON 键会导致问题。
而不是 { "title": "医院 - 谷歌地图", “urlViewport”:假, },我们得到 { title: "医院 - 谷歌地图", “urlViewport”:假 }
请帮我解析这个从 Google 返回的复杂 JSON 结构。
【问题讨论】:
-
我想解析一个 JSON 表示,它的键中没有双引号。
-
哇,坏了! 坏了!!响应以
while(1);开头,那是无效的 JSON。我不希望任何 JSON 解析器能够处理这个问题。请参阅JSON spec,了解如何格式化 JSON。 -
假设这不仅仅是一个 NSDictionary 的转储(而且看起来并非如此),那么它就坏了——它根本就不是 JSON。
-
@JefferyThomas -
while(1);是针对某些安全漏洞的经典保护措施。预计将在接收端删除。然而,“JSON”的其余部分被严重破坏了。 -
我不敢相信谷歌会发送如此糟糕的数据。您必须有一个错误的参数或类似的参数。
标签: objective-c ios sbjson json-framework