Tengo un objeto JSON con el siguiente valor:
@value = {"val":"test","val1":"test1","val2":"test2"}
Quiero recorrerlo en Ruby para obtener los pares clave / valor. Cuando lo uso @each
, no itera a través del objeto porque no está en la forma hash de Ruby:
@value = {"val"=>"test","val1"=>"test1","val2"=>"test2"}
¿Cómo puedo convertir el objeto JSON anterior a un hash Ruby?
value = '{"val":"test","val1":"test1","val2":"test2"}'
podría haber sido más legible.También puede usar el
with_indifferent_access
método de Rails para poder acceder al cuerpo con símbolos o cadenas.luego
fuente
Suponiendo que tiene un hash JSON dando vueltas en algún lugar, para convertirlo automáticamente en algo así como la versión de WarHog, envuelva sus contenidos de hash JSON en
%q{hsh}
etiquetas.Esto parece agregar automáticamente todo el texto escapado necesario como en la respuesta de WarHog.
fuente
¿Has probado: http://flori.github.com/json/ ?
De lo contrario, ¿podrías analizarlo? Si solo le interesan las matrices, algo para dividir lo anterior será bastante simple.
fuente
Me sorprende que nadie haya señalado el
[]
método de JSON , que hace que decodificar y codificar de / a JSON sea muy fácil y transparente.Considera esto:
str
ahora contiene el JSON codificadohash
.Es fácil revertirlo usando:
Los objetos personalizados deben
to_s
definirse para la clase, y dentro de ella se convierte el objeto en un hash y luego se usato_json
en él.fuente
Puedes usar la gema nice_hash: https://github.com/MarioRuiz/nice_hash
fuente