将水晶对象包装到JSON中的自定义根对象中

时间:2016-10-06 22:03:53

标签: json crystal-lang

我有一个类似下面的课程

class Foo 
  JSON.mapping(
    bar: String,
    baz: String,
  )
end

我知道我可以通过在JSON.mapping中指定{root: "name of node"}来包装JSON对象中的单个属性。但有没有办法为整个Foo课程做到这一点?

这样输出看起来像这样吗?

{
  "foo": {
    "bar": "",
    "baz": ""
  }
}

2 个答案:

答案 0 :(得分:1)

没有方法可以做到,但你可以这样做:

require "json"

class Foo
  JSON.mapping(
    bar: String,
    baz: String,
  )

  def initialize(@bar : String, @baz : String)
  end
end

foo = Foo.new("r", "z")
json = {foo: foo}.to_json
puts json

答案 1 :(得分:0)

作为评论的替代方法,您还可以覆盖to_json的{​​{1}}方法:

Foo

https://carc.in/#/r/286q