假设我有一个case类,其中包含可选字段nickName
和codec,如下所示:
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
用null
编码None
,我得到了测试错误:
Expected :"{"name":"SomeName"[]}"
Actual :"{"name":"SomeName"[,"nickName":null]}"
我检查了代码并找到了Option www.example.com的编码器https://github.com/zio/zio-json/blob/52d007ee22f214d12e1706b016f149c3243c632c/zio-json/shared/src/main/scala/zio/json/encoder.scala#L188-L202
有什么办法可以把它编码成缺少的JSON字段吗?
2条答案
按热度按时间5cnsuln71#
yzuktlbb2#
给定你链接的代码示例,你可以很容易地编写一个编码器,通过复制大部分代码,但修改: