Управление результатами после вызова API и JSON.parse - PullRequest
0 голосов
/ 25 мая 2018

Используя Ruby, я извлекаю из API в ответ, а затем анализирую, используя JSON.parse, чтобы получить результат

result = JSON.parse(response)    

В get есть также дополнительные «метаданные» и «данные».как фактические выводимые «элементы»

вывод выглядит примерно так:

{"metadata" => {"version" => 5}, "data" =>{"paging" => {"total_items" => 1, "number_of_pages" => 1}, "items" => [{"type" => "OrganizationSummary", "uid" => "33a97e", "properties"=> {"name" => "Google"}]

Я хочу удалить «метаданные» и «данные» из результата и вывести uid (33a97e) и имя (Google) вытащенных предметов.

Какой лучший способ сделать это?

1 Ответ

0 голосов
/ 25 мая 2018

Во-первых, у хеша result, который вы разместили, есть синтаксическая ошибка.Итак, я исправил это так:

result = {"metadata"=>{"version"=>5}, "data"=>{"paging"=>{"total_items"=>1, "number_of_pages"=>1}, "items"=>[{"type"=>"OrganizationSummary", "uid"=>"33a97e", "properties"=>{"name"=>"Google"}}]}}

Два, вы говорите, вы хотите удалить data (удаление metadata хорошо) из него, но значения, которые вам нужны, то есть uid иname, они вложены внутрь data.Так что, если вы удалите его, вы тоже потеряете эти значения.

Я думаю, вы хотите удалить только paging часть.Вот мое решение для этого:

result.delete('metadata')
 => {"version"=>5}

result['data'].delete('paging')
 => {"total_items"=>1, "number_of_pages"=>1}

# Now the values you need,
# `uid`(s) - can be more than one, as `items` is an array
result['data']['items'].map { |h| h['uid'] }
 => ["33a97e"]

# `name`(s)
result['data']['items'].map { |h| h['properties']['name'] }
 => ["Google"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...