我将以下xml响应从savon转换为hash
gridSVG::gridsvg(name = "~/Desktop/myPlot.svg", width = 15, height = 10)
myPlot
dev.off()
所以我可以用
挖掘那些sensor_data密钥对{:read_measurements_list_response=>{:read_measurements_list_result=>{:sensor_data_list=>{:sensor_data=>[{:type=>"Humidity", :value=>"26.20"}, {:type=>"Temperature", :value=>"33.12"}, {:type=>"Light", :value=>"5501.0"}, {:type=>"SoilMoisture", :value=>"0.223"}, {:type=>"Conductivity", :value=>"0.031"}, {:type=>"GroundTemperature", :value=>"26.9"}]}}, :@xmlns=>"http://tempuri.org/"}}
如何将此路径存储到变量中,以便每当xml响应更改结构时我都可以更改它?我尝试过使用几件东西但没有用。能够做res_body [hash_path]会很高兴。
答案 0 :(得分:1)
你要问两件事:
- 如何将此路径存储到变量中?
醇>
这取决于您的环境:您可以将其存储在数据库,文件中,在代码中对其进行硬编码,将其作为方法的默认值传递等等。
- 能够做res_body [hash_path]
会很高兴 醇>
您必须推出自己的解决方案。这样的事情可以奏效:
def hash_search(hash, keys)
return hash.fetch(keys.first, nil) if hash.blank? || keys.size <= 1
return hash_search(hash.fetch(keys[0], {}), keys[1..-1])
end
> hash = {a: {b: {c: 1}}}
=> {:a=>{:b=>{:c=>1}}}
> hash_search(hash, [:a, :b, :c])
=> 1