我正在尝试从哈希中获取一些键/值,但是还没有找到最佳的方法。另外,然后我需要将结果放入键为列标题的表中。
我尝试了map
,select
和dig
,但是我遇到各种错误。
require 'json'
json_hash = {:results=>["{\"resourceId\":\"i-5ee33\",\"configuration\":{\"instanceType\":\"m4.2xlarge\"},\"tags\":[{\"tag\":\"aws:au\\u003db\",\"value\":\"b-1a\",\"key\":\"awsss\"},{\"tag\":\"Kernluster\\ulues\",\"value\":\"blu\",\"key\":\"Kster\"},{\"tag\":\"Kuole\\udter\",\"value\":\"master\",\"key\":\"Kule\"},{\"tag\":\"Name\\uwest-1a\",\"value\":\"st-1a\",\"key\":\"Name\"}]}"], :query_info=>{:select_fields=>[{:name=>"[FILTERED]"}, {:name=>"[FILTERED]"}, {:name=>"[FILTERED]"}]}, :next_token=>"YwutZrD0Ow9Qh3HoYbiC"}
keys_to_extract = ['resourceId', 'instanceType', 'tags']
x = json_hash.map do |w|
w.select { |k,_| keys_to_extract.include? k }
end
puts x
未显示错误结果。
答案 0 :(得分:1)
大多数内容仍在JSON字符串中。您需要解析它们以便Ruby访问它们:
json_hash[:results].map! { |str| JSON.parse(str) }
尽管我希望您在这里输入错误,因为JSON无效。 \u
后面应有4个十六进制数字,但您有
{"tag":"Name\uwest-1a","value":"st-1a","key":"Name"}
这是胡言乱语。