【问题标题】:Why is my JSON.parse failing? Ruby on Rails为什么我的 JSON.parse 失败了? Ruby on Rails
【发布时间】:2012-12-02 21:01:32
【问题描述】:

我正在尝试将图像从 Flickr 的 API 加载到 Ruby on Rails 应用程序中,但我的 JSON.parse() 行上出现了“Unexpected Token”。

我在这里找到了另一个响应,其中返回的 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":"24066605@N07", "secret":"b4c05df8c5", "server":"8341", "farm":9, "title":"Crescent Lake", "ispublic":1, "isfriend":0, "isfamily":0}]}, "stat":"ok"}"'

【问题讨论】:

    标签: ruby-on-rails ruby json flickr open-uri


    【解决方案1】:

    调用返回的 json 看起来不错。将您的解析更改为:

    @images = JSON.parse(@jsonresults)
    

    【讨论】:

      【解决方案2】:

      That is not valid JSON. 外部的双引号集不属于。这是有效的版本:

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

      【讨论】:

      • 所以我可以使用 .chop 删除最后的双引号....关于如何摆脱第一个双引号的建议?
      • John Naegle's answer 解决了这个问题。正如他所说,调用返回的 JSON 看起来非常好。
      • 多哈。它确实做到了。不知道为什么我试图把事情复杂化。
      • @json_results.chop.reverse.chop.reverse
      猜你喜欢
      • 2012-01-10
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      相关资源
      最近更新 更多