如何使用HTTParty提取JSON数组字段?

时间:2018-08-30 05:06:24

标签: ruby-on-rails json ruby httparty

我正在使用FOOD2FORK api在ruby中使用HTTParty提取数据。

我的代码:

require 'httparty'  #Note : This file is in the models >> filename.rb
#Don't need to require when using bundler
#Restful Web Services 
#1. Base URI 2. Support XML or JSON 3. Support HTTP operations (GET, POST)
#Think of web at MVC : website you can get resources in any format 
#HTTParty parses XML or JSON for you (like your browser - it's a client).  Parses into a Ruby hash or array

class Recipe
    include HTTParty
    ENV["FOOD2FORK_KEY"] = "5b6b74c6cc0fa9dc23871a7ae753f6c7"

    base_uri "https://food2fork.com/api" #Same across most requests 
    default_params key: ENV["FOOD2FORK_KEY"], fields: "image_url" #defaults, like API developer key #fields: "image_url, source_url, title",
    format :json #Tell it which format data comes in
    #q:"search" request parameter 

    def self.for (keyword) 
        #class method called for which takes in a term 
        get("/search", query: {q: keyword})["recipes"]  #get is method provided by HTTParty 


        #returns array where each element in the array is a hash 
    end 
    pp Recipe.for "chocolate"
end

它回来了

[
  {
    "publisher"=>"BBC Good Food", 
    "f2f_url"=>"http://food2fork.com/view/9089e3", 
    "title"=>"Cookie Monster cupcakes", 
    "source_url"=>"http://www.bbcgoodfood.com/recipes/873655/cookie-monster-cupcakes",
    "recipe_id"=>"9089e3", 
    "image_url"=>"http://static.food2fork.com/604133_mediumd392.jpg", 
    "social_rank"=>100.0, 
    "publisher_url"=>"http://www.bbcgoodfood.com"
  }
]

但是我只想提取image_url,即使使用field也是要提取整个数据集,但只提取image_url吗?

  

P.S您可以在此处检查JSON的格式-   http://food2fork.com/api/search?key=65987bf1f4b22007c365c243f5670f35&q=shredded%20chicken

1 个答案:

答案 0 :(得分:0)

下面的代码应该可以工作

response = your response from API

response_data = JSON.parse(response.body).with_indifferent_access

response_data['recipes'].each do |recipe|
  puts recipe['image_url'] # image_url of block
end