1

使用 JSON.parse 创建嵌套的 OpenStruct 对象似乎很容易:

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

是否有更简单的方法将其转换回 json,而无需创建递归函数(如此处所示:Deep Convert OpenStruct to JSON)?

4

1 回答 1

0

在你的结构上调用 OpenStruct#to_json 应该这样做:

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

并且从普通的 irbOpenStruct#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>>\""

红宝石 2.5.3,轨道 4.2.11.1

于 2019-04-03T13:54:41.470 回答