0

我有一个像下面这样的课程

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

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

所以输出看起来像这样?

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

2 回答 2

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
于 2016-10-06T23:02:37.743 回答
0

作为我评论的替代方案,您还可以覆盖以下to_json方法Foo

def to_json(builder : JSON::Builder)
  builder.object do
    builder.field "foo" do
      previous_def
    end
  end
end

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

于 2017-06-21T08:55:25.213 回答