【发布时间】:2022-01-26 12:23:42
【问题描述】:
假设我有一个带有可选字段nickName 和编解码器的案例类,如下所示:
final case class Person(name: String, nickName: Option[String])
object Person {
implicit val personCodec: JsonCodec[Person] = DeriveJsonCodec.gen
}
我想使用zio-json (v1.5.0) 对其进行编码并得到以下结果:
{"name":"SomeName"}
这是我的测试:
encoder.encodeJson(Person("SomeName", None), None).toString shouldBe """{"name":"SomeName"}""".stripMargin
看起来像 zio-json 编码 None 和 null 并且我得到了测试错误:
Expected :"{"name":"SomeName"[]}"
Actual :"{"name":"SomeName"[,"nickName":null]}"
我检查了代码,找到了 Option https://github.com/zio/zio-json/blob/52d007ee22f214d12e1706b016f149c3243c632c/zio-json/shared/src/main/scala/zio/json/encoder.scala#L188-L202 的编码器
知道如何将其编码为缺少的 JSON 字段吗?
【问题讨论】:
-
它在 zio-json 0.2.0-M3 上按预期工作。此外,最新的里程碑对序列化有很多性能改进。