我想在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密钥会导致问题。
而不是{ “标题”:“医院 - Google地图”, “urlViewport”:false, 我们得到{ 标题:“医院 - Google地图”, “urlViewport”:false }
请帮我解析从Google返回的这个复杂的JSON结构。
答案 0 :(得分:1)
这对我的情况更有效,因为我的值包含导致上述答案中的正则表达式错误匹配的次数。
json = [json stringByReplacingOccurrencesOfString: @"(\\w*[A-Za-z]\\w*)\\s*:"
withString: @"\"$1\":"
options: NSRegularExpressionSearch
range: NSMakeRange(0, json.length)];
答案 1 :(得分:0)
您需要在键中添加缺少的引号,请尝试以下操作:
responseString = [responseString stringByReplacingOccurrencesOfString:@"(\\w+)\\s*:"
withString:@"\"$1\":"
options:NSRegularExpressionSearch
range:NSMakeRange(0, [responseString length])];
这应该适用于给定的JSON字符串。