gpt4 book ai didi

scala - 有没有办法在Circe解码器中具有可选字段?

转载 作者:行者123 更新时间:2023-12-04 22:27:59 24 4
gpt4 key购买 nike

我有一个case类,每个字段都是可选的,例如:

case class Foo(name: Option[String],
phone: Option[String],
email: Option[String])


我试图为我的案例类创建手动解码器,发现解码器类似于:

implicit val decoder: Decoder[Foo] = (c: HCursor) => {
for {
name <- c.downField("name").as[String]
phone <- c.downField("phone").as[String]
email <- c.downField("email").as[String]
} yield {
new Foo(name, phone, email)
}
}


但是检查 downField方法,如果未设置该字段,则光标将移至 FailedCursor,因此会出现错误。

我如何期望某个字段是可选的,如果未定义,则返回 None

最佳答案

只需使用c.downField.as[Option[T]],那么您的代码将如下所示:

implicit val decoder: Decoder[Foo] = (c: HCursor) => {
for {
name <- c.downField("name").as[Option[String]]
phone <- c.downField("phone").as[Option[String]]
email <- c.downField("email").as[Option[String]]
} yield new Foo(name, phone, email)
}

关于scala - 有没有办法在Circe解码器中具有可选字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48673387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com