【发布时间】:2017-07-10 13:15:28
【问题描述】:
假设我有以下案例类需要使用 circe 序列化为 JSON 对象:
@JsonCodec
case class A(a1: String, a2: Option[String])
@JsonCodec
case class B(b1: Option[A], b2: Option[A], b3: Int)
现在我需要将val b = B(None, Some(A("a", Some("aa")), 5) 编码为 JSON,但我希望能够控制它是否输出为
{
"b1": null,
"b2": {
"a1": "a",
"a2": "aa"
},
"b3": 5
}
或
{
"b2": {
"a1": "a",
"a2": "aa"
},
"b3": 5
}
使用Printer 的dropNullKeys 配置,例如b.asJson.noSpaces.copy(dropNullKeys = true) 将导致从输出中省略 Nones,而将其设置为 false 会将 Nones 编码为 null (see also this question)。但是如何才能在每个字段的基础上控制此设置呢?
【问题讨论】: