json - 如何从带有转义字符的嵌套哈希中获取键值
问题描述
我试图从哈希中获取一些键/值,但还没有找到最好的方法。此外,然后我需要将结果放在一个表中,其中键作为列标题。
我试过了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
没有显示错误结果。
解决方案
大多数内容仍然在 JSON 字符串中。您需要解析它们以便 Ruby 访问它们:
json_hash[:results].map! { |str| JSON.parse(str) }
虽然我希望你有一个错字,因为 JSON 是无效的。A\u
后面应该跟 4 个十六进制数字,但你有
{"tag":"Name\uwest-1a","value":"st-1a","key":"Name"}
这是胡言乱语。
推荐阅读
- git - .gitignore 文件在 Symfony 4 中的用途是什么?
- c - 用STMF0控制ILI9341 LCD
- java - 具有 JDBC 访问权限的 Oracle 11g 远程测试实例
- python - Python 3 - Converting byte string to string with same content
- wmi - 仅当 PC 在 Prometheus 中启动时如何获得平均时间
- java - SqsListener 没有为本地堆栈队列运行?
- angular - Using SwitchMap() to Handle Canceling Previous Requests
- javascript - 当我更改我的 html 中的正文标记类时,Javascript 事件将不再起作用?
- php - 从数据表中检索元素并对相同的元素求和
- python - Celery apply_async 被多次调用