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.
Se o objeto for do tipo string, analise a string e retorne o resultado analisado como uma estrutura de dados Ruby. Caso contrário, gere um texto JSON a partir do objeto de estrutura de dados Ruby e retorne-o.
Considere isto:
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
agora contém o JSON codificado hash
.
É fácil reverter usando:
JSON[str] # => {"val"=>"test", "val1"=>"test1", "val2"=>"test2"}
Objetos personalizados precisam ser to_s
definidos para a classe e, dentro dele, converte o objeto em um Hash e depois o utiliza to_json
.
value = '{"val":"test","val1":"test1","val2":"test2"}'
poderia ter sido mais legível.