【问题标题】:Rails error message when parsing a JSON response解析 JSON 响应时出现 Rails 错误消息
【发布时间】:2014-02-28 19:00:10
【问题描述】:

我有一种方法可以从 Lastfm 获取艺术家的热门专辑

    def get_albums
        @albums = Array.new
        @artistname.each do |name|
            s = LastFM::Artist.get_top_albums(:artist => name, :limit => 1)
            r = JSON.parse(s.to_json)['topalbums']['album']['name']
            @albums.push r                      
            end
    end

只要艺术家有顶级专辑,此方法就可以正常工作并为每位艺术家返回专辑数组,如果没有,我会得到一个 NoMethodError 未定义方法 `[]' for nil:NilClass。

我正在尝试做的是在解析时添加一个检查以尝试通过此 NoMethodError 但似乎无法弄清楚。我试过这个:

    def get_albums
        @albums = Array.new
        @artistname.each do |name|
            s = LastFM::Artist.get_top_albums(:artist => name, :limit => 1)
            r = JSON.parse(s.to_json)['topalbums']['album']['name']
            if['topalbums']['album']['name'].empty?
                @albums.push(@artistname + "does not have a top album")
            else
                @albums.push r                      
            end
                end

    end

这给了我一个 TypeError can't convert String into Integer 消息

有什么想法可以解决这个问题吗?谢谢

【问题讨论】:

    标签: ruby-on-rails ruby json parsing


    【解决方案1】:

    + 运算符不是 ruby​​ 中的 concat 运算符。

    您尝试使用的是<< 运算符。

    @albums.push(@artistname << " does not have a top album")
    

    【讨论】:

    • 干杯我已将 + 更改为
    • 你真的得到这行代码的错误了吗?
    • 另外,if['topalbums']['album']['name'].empty? 没有任何意义。您需要指定要搜索的哈希值。
    • 改成if r.empty?
    • 试过了,但是得到了未定义的方法 `[]' for nil:NilClass for r = JSON.parse(s.to_json)['topalbums']['album']['name']跨度>
    猜你喜欢
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多