Я удивлен, что никто не указал на []
метод JSON , который делает его очень простым и прозрачным для декодирования и кодирования из / в JSON.
Если объект похож на строку, проанализируйте строку и верните проанализированный результат как структуру данных Ruby. В противном случае сгенерируйте текст JSON из объекта структуры данных Ruby и верните его.
Учти это:
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
теперь содержит кодированный JSON hash
.
Это легко изменить, используя:
JSON[str] # => {"val"=>"test", "val1"=>"test1", "val2"=>"test2"}
Пользовательские объекты должны быть to_s
определены для класса, и внутри него конвертировать объект в хэш, а затем использовать to_json
его.
value = '{"val":"test","val1":"test1","val2":"test2"}'
мог бы быть более читабельным.