首页 > 解决方案 > 在 Ruby 中的单个对象中保存多个 api 响应

问题描述

我有一个场景,我需要将多个 API 响应转换为一个对象。怎么可能?下面是我的代码。如何将其转换为一个对象?

require 'httparty'
require 'json'

def make_request(url)
  HTTParty.get(url, headers: { 'Accept' => 'application/json' }).parsed_response
end

numberone_apis = make_request('api.openweathermap.org/data/2.5/forecast/daily?q={city name},{state code}&cnt={cnt}&appid={API key}')

numbertwo_apis= make_request('api.openweathermap.org/data/2.5/forecast/daily?q={city name},{state code},{country code}&cnt={cnt}&appid={API key}')


numberthree_apis = make_request('api.openweathermap.org/data/2.5/forecast/daily?q={city name}&cnt={cnt}&appid={API key})


puts numberone_apis
puts numbertwo_apis
puts numberthree_apis

convert_object2one = how ? 

标签: jsonrubyhashbackendhttpbackend

解决方案


由于缺少有关单个响应外观的信息,我只能建议构建一个新对象。根据给定的小信息,这个答案没有优化和高度固执己见。

require 'httparty'
require 'json'

def make_request(url)
  HTTParty.get(url, headers: { 'Accept' => 'application/json' }).parsed_response
end

whole_response = {}

whole_response['numberone_apis'] = make_request('api.openweathermap.org/data/2.5/forecast/daily?q={city name},{state code}&cnt={cnt}&appid={API key}')

whole_response['numbertwo_apis'] = make_request('api.openweathermap.org/data/2.5/forecast/daily?q={city name},{state code},{country code}&cnt={cnt}&appid={API key}')

whole_response['numberthree_apis'] = make_request('api.openweathermap.org/data/2.5/forecast/daily?q={city name}&cnt={cnt}&appid={API key}')

puts whole_response 

#=> 
{
  'numberone_apis':
    { ... },
  'numbertwo_apis':
    { ... },
  'numberthree_apis':
    { ... }
}

推荐阅读