Eu tenho um objeto JSON segurando o seguinte valor:
@value = {"val":"test","val1":"test1","val2":"test2"}
Eu quero fazer um loop através dele em Ruby para obter os pares chave / valor. Quando uso @each
, ele não percorre o objeto porque não está no formato de hash Ruby:
@value = {"val"=>"test","val1"=>"test1","val2"=>"test2"}
Como posso converter o objeto JSON acima em um hash Ruby?
value = '{"val":"test","val1":"test1","val2":"test2"}'
poderia ter sido mais legível.Você também pode usar o
with_indifferent_access
método Rails para acessar o corpo com símbolos ou strings.então
fonte
Supondo que você tenha um hash JSON pendurado em algum lugar, para convertê-lo automaticamente em algo como a versão do WarHog, envolva o conteúdo do hash JSON em
%q{hsh}
tags.Isso parece adicionar automaticamente todo o texto escapado necessário, como na resposta do WarHog.
fonte
Você já tentou: http://flori.github.com/json/ ?
Na falta disso, você poderia simplesmente analisá-lo? Se você estiver interessado apenas em matrizes, algo para dividir as opções acima será bastante simples.
fonte
Estou surpreso que ninguém tenha apontado o
[]
método JSON , o que torna muito fácil e transparente decodificar e codificar de / para JSON.Considere isto:
str
agora contém o JSON codificadohash
.É fácil reverter usando:
Objetos personalizados precisam ser
to_s
definidos para a classe e, dentro dele, converte o objeto em um Hash e depois o utilizato_json
.fonte
Você pode usar a gema nice_hash: https://github.com/MarioRuiz/nice_hash
fonte