Ответ 1
Как насчет следующего фрагмента?
require 'json'
value = '{"val":"test","val1":"test1","val2":"test2"}'
puts JSON.parse(value) # => {"val"=>"test","val1"=>"test1","val2"=>"test2"}
У меня есть объект JSON, имеющий следующее значение:
@value = {"val":"test","val1":"test1","val2":"test2"}
Я хочу пропустить его в Ruby, чтобы получить пары ключевых значений. Когда я использую @each
, он не перебирает объект, потому что он не находится в хэш-форме ruby:
@value = {"val"=>"test","val1"=>"test1","val2"=>"test2"}
Как я могу преобразовать вышеуказанный объект JSON в хеш файл Ruby?
Как насчет следующего фрагмента?
require 'json'
value = '{"val":"test","val1":"test1","val2":"test2"}'
puts JSON.parse(value) # => {"val"=>"test","val1"=>"test1","val2"=>"test2"}
Вы также можете использовать метод rails: with_indifferent_access, чтобы получить доступ к телу с помощью символов или строк.
value = '{"val":"test","val1":"test1","val2":"test2"}'
json = JSON.parse(value).with_indifferent_access
затем
json[:val] #=> "test"
json["val"] #=> "test"
Предполагая, что где-то висит JSON-хэш, чтобы автоматически преобразовать его в нечто вроде версии WarHog, оберните содержимое хэша json в тегах% q {hsh}. Это, кажется, автоматически добавляет все необходимые экранированные тексты, как в ответе WarHog
Вы пробовали: http://flori.github.com/json/.
В противном случае вы могли бы просто разобрать его? Если это только массивы, которые вас интересуют, то разделение вышесказанного будет довольно простым. N
Вы можете использовать гем nice_hash: https://github.com/MarioRuiz/nice_hash
require 'nice_hash'
my_string = '{"val":"test","val1":"test1","val2":"test2"}'
# on my_hash will have the json as a hash, even when nested with arrays
my_hash = my_string.json
# you can filter and get what you want even when nested with arrays
vals = my_string.json(:val1, :val2)
# even you can access the keys like this:
puts my_hash._val1
puts my_hash.val1
puts my_hash[:val1]