使用JSON.parse创建嵌套的OpenStruct对象似乎很容易:
JSON.parse( '{"a":{"b":0}}', object_class:OpenStruct )
#<OpenStruct a=#<OpenStruct b=0>>
是否有更简单的方法将其转换回json,而不创建递归函数(如下所示:Deep Convert OpenStruct to JSON)?
在你的struct上调用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