首页 > 解决方案 > 如何从带有转义字符的嵌套哈希中获取键值

问题描述

我试图从哈希中获取一些键/值,但还没有找到最好的方法。此外,然后我需要将结果放在一个表中,其中键作为列标题。

我试过了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

没有显示错误结果。

标签: jsonrubyhashhashmap

解决方案


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

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

虽然我希望你有一个错字,因为 JSON 是无效的。A\u后面应该跟 4 个十六进制数字,但你有

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

这是胡言乱语。


推荐阅读