Как разобрать JSON без кавычек с его строкой KEY?
Я хочу проанализировать вывод json, полученный из следующего URL-адреса в рамках SBJSON для iOS 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": "Больница - Карты Google", "urlViewport": false, } мы получаем { title: "Больница - Карты Google", "urlViewport": false }
Пожалуйста, помогите мне разобрать эту сложную структуру JSON, возвращенную из Google.
2 ответа
Это работало лучше для моего случая, потому что мои значения содержали времена, из-за которых регулярное выражение в ответе выше совпадало неправильно.
json = [json stringByReplacingOccurrencesOfString: @"(\\w*[A-Za-z]\\w*)\\s*:"
withString: @"\"$1\":"
options: NSRegularExpressionSearch
range: NSMakeRange(0, json.length)];
Вам нужно добавить недостающие кавычки в ключи, поэтому попробуйте это:
responseString = [responseString stringByReplacingOccurrencesOfString:@"(\\w+)\\s*:"
withString:@"\"$1\":"
options:NSRegularExpressionSearch
range:NSMakeRange(0, [responseString length])];
Это должно хорошо работать с данной строкой JSON.