Преобразование вложенного OpenStruct в JSON - PullRequest
0 голосов
/ 03 апреля 2019

Кажется довольно простым создание вложенных объектов OpenStruct с использованием JSON.parse:

JSON.parse( '{"a":{"b":0}}', object_class:OpenStruct )
#<OpenStruct a=#<OpenStruct b=0>>

Существует ли более простой способ преобразования его обратно в json без создания рекурсивной функции (как показано здесь: Глубокое преобразование OpenStruct в JSON )?

1 Ответ

0 голосов
/ 03 апреля 2019

Вызов OpenStruct # to_json в вашей структуре должен сделать это:

[2] pry(main)> JSON.parse('{"a":{"b":0}}', object_class:OpenStruct).to_json
=> "{\"a\":{\"b\":0}}"

И из обычного irb OpenStruct#to_json не работает:

irb(main):003:0> require 'ostruct'
=> true
irb(main):004:0> require 'json'
=> true
irb(main):005:0> JSON.parse('{"a":{"b":0}}', object_class:OpenStruct).to_json
=> "\"#<OpenStruct a=#<OpenStruct b=0>>\""

ruby ​​2.5.3, rails 4.2.11.1

...