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.
Si el objeto tiene forma de cadena, analice la cadena y devuelva el resultado analizado como una estructura de datos Ruby. De lo contrario, genere un texto JSON a partir del objeto de estructura de datos Ruby y devuélvalo.
Considera esto:
require 'json'
hash = {"val":"test","val1":"test1","val2":"test2"} # => {:val=>"test", :val1=>"test1", :val2=>"test2"}
str = JSON[hash] # => "{\"val\":\"test\",\"val1\":\"test1\",\"val2\":\"test2\"}"
str
ahora contiene el JSON codificado hash
.
Es fácil revertirlo usando:
JSON[str] # => {"val"=>"test", "val1"=>"test1", "val2"=>"test2"}
Los objetos personalizados deben to_s
definirse para la clase, y dentro de ella se convierte el objeto en un hash y luego se usa to_json
en él.
value = '{"val":"test","val1":"test1","val2":"test2"}'
podría haber sido más legible.