下面的代码将所有县作为字符串返回给我,我可以通过使用inspect方法看到它。
def self.all_counties
response['ChargeDevice'].each do |charger|
puts ['ChargeDeviceLocation']['Address']['County'].inspect
end
end
将每个返回的字符串存储在一个数组中的正确方法是什么,以便我以后可以操作它?
JSON
"ChargeDeviceLocation" => {
"Latitude" =>"51.605591",
"Longitude" =>"-0.339510",
"Address" => {
"County" =>"Greater London",
"Country" =>"gb"
}
答案 0 :(得分:2)
如果响应包含每个项目的所有键,则此方法有效:
counties = response['ChargeDevice'].map do |r|
r.dig('ChargeDeviceLocation', 'Address', 'County')
end
当树没有所有项目的条目时,这样的东西会给你nils:
counties = response['ChargeDevice'].map do |r|
r.fetch('ChargeDeviceLocation', {}).
fetch('Address', {}).
fetch('County', nil)
end
您还可以使用JSONPath(和ruby JSONPath gem)。
require 'jsonpath'
counties = JsonPath.new('$..County').on(response.to_json)