2012-05-19 2 views
4

는 내가 온라인으로 읽을 http://www.bodurov.com/JsonFormatter/를 사용하고 아이폰 OS http://maps.google.com/maps?q=school&mrt=yp&sll=13.006389,80.2575&output=jsonKEY 문자열에 따옴표가없는 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:""}, 

에 대한 SBJSON 프레임 워크에서 다음 URL로 인한 JSON 출력을 구문 분석합니다.

ASIHttpRequest 응답 방법에서 나는 을 제거했습니다. (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"거짓, 가}, 우리가 얻을 { 제목 : "병원 - Google지도", "urlViewport" : false }

Google에서 반환 한 복잡한 JSON 구조를 구문 분석하도록 도와주세요. 이것은 주어진 JSON 문자열로 잘 작동한다

responseString = [responseString stringByReplacingOccurrencesOfString:@"(\\w+)\\s*:" 
           withString:@"\"$1\":" 
           options:NSRegularExpressionSearch 
           range:NSMakeRange(0, [responseString length])]; 

:

+0

무슨 문제입니까 ?? –

+0

키에 큰 따옴표가없는 JSON 표현을 구문 분석하려고합니다. –

+0

와우, 그건 망가졌습니다! **부서진**!! 응답은'while (1);'으로 시작합니다. 잘못된 JSON입니다. 나는 JSON 파서가 그것을 처리 할 수있을 것으로 기대하지 않는다. JSON을 포맷하는 방법은 [JSON spec] (http://www.json.org/)을 참조하십시오. –

답변

0

당신은 키에 누락 된 따옴표를 추가, 그래서 이것을 시도 할 필요가있다.

+0

위의 JSON은 [링크] (http://maps.google.com/maps?q=school&mrt=yp&sll=13.006389,80.2575&output=json)의 두 줄짜리 코드입니다. 나는 또한이 해결책 [link] (http://www.dimzzy.com/blog/2011/09/fixing-invalid-json-before-parsing/)을 시도했다. 그러나 희망이 없으므로 kml 출력으로 갈 수 있습니다. 관심을 가져 주셔서 감사합니다. –

+0

나는 이것을 믿을만하게 작동시키지 않을 것이다. –

1

내 값에 위 응답의 정규 표현식을 잘못 작성한 시간이 포함되어있어이 경우 더 잘 작동합니다.

json = [json stringByReplacingOccurrencesOfString: @"(\\w*[A-Za-z]\\w*)\\s*:" 
             withString: @"\"$1\":" 
              options: NSRegularExpressionSearch 
              range: NSMakeRange(0, json.length)]; 
+1

나는 캐릭터 교체가 믿을만하게 작동하는 것을 신뢰하지 않을 것이다. –

+0

일반적으로 동의 함. 데이터의 형식을 알고있는 (또는 다른 방법으로 오류 검사를 처리하는) 특정 사례의 경우이 reg ex는 조작 된 키를 인식하기 위해 문자 단위로 작업하는 것보다 훨씬 짧은 해결책입니다. – greg

+0

"실제"환경에서 오픈 소스 JSON 파서를 사용하여이를 처리하도록 수정해야했습니다. –