Rails jsonb получает все данные с определенным ключом

#ruby-on-rails #jsonb

#ruby-на-рельсах #jsonb

Вопрос:

Как я могу получить все значения в этом jsonb?

 item = [{"name"=>"Name 1", "value"=>"Value 1"}, {"name"=>"Name 2", "value"=>"Value 2"}]
 

Обновить:
Есть ли способ сделать это без json.parse? Я думал, что это должно сработать и без него.

 <%= data = JSON.parse(item.to_json)%>

<%= p data.collect { |item| item['value'] }
 

Комментарии:

1. Является ли переменная item значением jsonb? В первом jsonb также есть опечатка: вам не хватает закрывающей скобки. Это не нужно для разбора. Это массив, поэтому вы должны иметь возможность ставить значение с item[0]['value'] помощью и item[1][‘value’]

Ответ №1:

Во-первых, первый опубликованный вами блок кода не является JSON в ruby, JSON в Ruby — это строка (https://ruby-doc.org/stdlib-2.6.3/libdoc/json/rdoc/JSON.html#module-JSON-label-Parsing JSON), так что это должно выглядеть примерно так.

 item = "[{"name":"Name 1","value":"Value 1"},{"name":"Name 2","value":"Value 2"}]"
 

И поскольку он обрабатывается как строка, вам нужно проанализировать его, прежде чем вы сможете манипулировать данными, так что ваш код почти корректен, я просто не знаю, почему вы сначала создаете свой item json, а затем сразу же анализируете его из JSON.

 data = JSON.parse(item)
p data.collect { |item| item['value'] }