假设我有以下案例类需要使用 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)
将导致None
从输出中省略 s,而将其设置为false
会将 s 编码None
为null
(另请参见此问题)。但是如何在每个字段的基础上控制这个设置呢?