Как получить значение ключа из вложенного хэша с escape-символами - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь получить некоторые ключи / значения из хэша, но не нашел лучшего способа сделать это. Кроме того, мне нужно поместить результаты в таблицу с ключами в качестве заголовков столбцов.

Я пробовал 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

Результаты не отображаются.

1 Ответ

1 голос
/ 30 мая 2019

Большая часть содержимого все еще находится в строке JSON. Вам необходимо проанализировать их, чтобы Ruby мог получить к ним доступ:

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

Хотя я надеюсь, что у вас есть опечатка, потому что JSON является недействительным. Предполагается, что за \u следуют 4 шестнадцатеричных цифры, но у вас есть

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

это бред.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...