2012-12-02 39 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

http://jsonlint.com/ – 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刪除最後一個雙引號....如何擺脫第一個建議嗎? – wolf2600

+0

[John Naegle的答案](http://stackoverflow.com/a/13673841/139010)解決了這個問題。就像他說的那樣,通話返回的JSON看起來非常好。 –

+0

Doh。它確實如此。不知道爲什麼我試圖讓事情複雜化。 – wolf2600

相關問題