#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'] }