2017-04-02 112 views
0

我有一个probem当我分析这样所有的文件工作解析JSON红宝石

{ “StumbleUpon公司”:0, “reddit的”:0, “脸谱”:{ “TOTAL_COUNT”:19227, “COMMENT_COUNT” :0, “SHARE_COUNT”:19227}, “LinkedIn”:27}

我的代码:

module SocialShares 
    class Sharedcount < Base 
    def shares! 
     response = RestClient.get(url) 
     JSON.parse(response)['Facebook']["share_count"] || 0 
    end 

    private 

    def url 
     "https://free.sharedcount.com/?url=#{checked_url}&apikey=#{Rails.application.secrets.socialshared_api_key}" 
    end 
    end 
end 

当我分析这个我有错误类型错误:字符串的隐式转换成整数

file: {“Stumb leUpon“:0,”Reddit“:0,”Facebook“:0,”LinkedIn“:0}

回答

1

第二个结构没有必要的结构来导航它。你需要更谨慎地处理这个:

def shares! 
    response = RestClient.get(url) 

    data = JSON.parse(response) 

    data['Facebook'].is_a?(Hash) && data['Facebook']["share_count"] || 0 
end 

你也可以做到这一点用Ruby 2.4或更高版本:

data.dig('Facebook', 'share_count').to_i 
+0

给出了同样的错误 –

+0

你可以使用'dig'方法?您的数据结构高度不一致,难以使用。我已经修改了代码,让它更加偏执狂。 – tadman

+0

感谢您的回答 –