2012-12-02 2 views
4

Flickr의 API에서 Ruby on Rails 응용 프로그램으로 이미지를로드하려고하는데 JSON.parse() 행에 "예기치 않은 토큰"이 나타납니다.내 JSON.parse가 실패하는 이유는 무엇입니까? Ruby on Rails

리턴 된 JSON이 이중 따옴표를 이스케이프 처리 한 다른 응답을 찾았습니다. 해결책은 .gsub 것을 마지막에 추가하는 것이지만 여전히 오류가 발생합니다.

누구나 무슨 문제인지 알고 계십니까?

def add 

@jsonresults = open("http://api.flickr.com/services/rest/?method=flickr.interestingness.getList&api_key=bb398c11934abb6d51bdd720020f6a4a&per_page=1&page=1&format=json&nojsoncallback=1").read 
@images = JSON.parse(@jsonresults.to_json.gsub('\"', '"')) 

end 

오류 :

JSON::ParserError in ImagesController#add 

757: unexpected token at '"{"photos":{"page":1, "pages":500, "perpage":1, "total":500, "photo":[{"id":"8234011021", "owner":"[email protected]", "secret":"b4c05df8c5", "server":"8341", "farm":9, "title":"Crescent Lake", "ispublic":1, "isfriend":0, "isfamily":0}]}, "stat":"ok"}"' 
+1

는 – ryanve

답변

5

전화로 회신 한 json이 정상적으로 보입니다. 이에 구문 분석을 변경 :

@images = JSON.parse(@jsonresults) 
+0

고맙습니다. 그거야. – wolf2600

1

That is not valid JSON. 속하지 않는 큰 따옴표의 외부 세트. 유효 버전 :

'{"photos":{"page":1, "pages":500, "perpage":1, "total":500, "photo":[{"id":"8234011021", "owner":"[email protected]", "secret":"b4c05df8c5", "server":"8341", "farm":9, "title":"Crescent Lake", "ispublic":1, "isfriend":0, "isfamily":0}]}, "stat":"ok"}' 
+0

은 그래서 첫 번째 제거하는 방법에 대한 최종 따옴표 .... 조언을 제거하는 .chop 사용할 수 있습니다 http://jsonlint.com/? – wolf2600

+0

[John Naegle의 답변] (http://stackoverflow.com/a/13673841/139010)이 문제를 해결합니다. 그가 말했듯이, JSON 호출에 의해 반환 완벽하게 괜찮아 보인다. –

+0

Doh. 그것은 확실히했다. 왜 내가 그 문제를 복잡하게하려고 노력했는지 모르겠다. – wolf2600