对象to_json包含所有属性

时间:2017-09-13 11:00:27

标签: json crystal-lang

我有一些通过HTTP发送到API的类,我需要将所有属性(包括nils)导出到json。

我有一个这样的课程:

class Customer

  JSON.mapping(
    id:    UInt32 | Nil,
    name:  String | Nil,
    email: String | Nil,
    token: String
  )

  def initialize @token
  end
end

当我创建客户的实例并导出到json时,我会检索到意外的结果。

c = Customer.new "FULANITO_DE_COPAS"
puts c.to_json

# Outputs
{"token":"FULANITO_DE_COPAS"}

# I expect
{"id":null,"name":null,"email":null,"token":"FULANITO_DE_COPAS"}

如何强制 to_json 功能完全导出porperties类?

1 个答案:

答案 0 :(得分:4)

使用emit_null

class Customer

  JSON.mapping(
    id:    {type: UInt32?, emit_null: true},
    name:  {type: String?, emit_null: true},
    email: {type: String?, emit_null: true},
    token: String
  )

  def initialize(@token)
  end
end

c = Customer.new "FULANITO_DE_COPAS"
c.to_json #=> {"id":null,"name":null,"email":null,"token":"FULANITO_DE_COPAS"}