使用JSON.parse创建嵌套的OpenStruct对象似乎非常容易:
JSON.parse( '{"a":{"b":0}}', object_class:OpenStruct )
#<OpenStruct a=#<OpenStruct b=0>>有没有一种更简单的方法可以将它转换回json,而不需要创建递归函数(如这里所演示的:Deep Convert OpenStruct to JSON)?
发布于 2019-04-03 21:54:41
在你的结构上调用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
https://stackoverflow.com/questions/55495988
复制相似问题