如何从带有转义符的嵌套哈希中获取键值

时间:2019-05-30 12:12:08

标签: json ruby hash hashmap

我正在尝试从哈希中获取一些键/值,但是还没有找到最佳的方法。另外,然后我需要将结果放入键为列标题的表中。

我尝试了mapselectdig,但是我遇到各种错误。

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

未显示错误结果。

1 个答案:

答案 0 :(得分:1)

大多数内容仍在JSON字符串中。您需要解析它们以便Ruby访问它们:

json_hash[:results].map! { |str| JSON.parse(str) }

尽管我希望您在这里输入错误,因为JSON无效。 \u后面应有4个十六进制数字,但您有

{"tag":"Name\uwest-1a","value":"st-1a","key":"Name"}

这是胡言乱语。