2017-04-02 145 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

感謝您的回答 –