gpt4 book ai didi

scala - Circe Scala - 编码和解码 Map[] 和案例类

转载 作者:行者123 更新时间:2023-12-04 16:04:03 29 4
gpt4 key购买 nike

我正在尝试为我拥有的案例类创建编码器和解码器:

case class Road(id: String, light: RoadLight, names: Map[String, String])

RoadLight 是一个带有枚举的 java 类。

public enum RoadLight {
red,yellow,green
}

我尝试过半自动编码和解码:制作隐式编码器和解码器。
我从 Map[String,String] 类型开始:

implicit val namesDecoder: Decoder[Map[String, String]] = deriveDecoder[Map[String, String]]
implicit val namesEncoder: Encoder[Map[String, String]] = deriveEncoder[Map[String, String]]

但我确实得到了他们两个的错误!

1: 找不到 io.circe.generic.decoding.DerivedDecoder[A] 类型的惰性隐式值

2: 错误:没有足够的参数用于方法 derivedDecoder: (隐式解码:shapeless.Lazy[io.circe.generic.decoding.DerivedDecoder[A]])io.circe.Decoder[A ]。未指定值参数解码。 隐式验证名称解码器:解码器[ map [字符串,字符串]]=派生解码器

我已经按照书本做了所有事情,无法理解哪里出了问题。我什至没有尝试解析案例类,只有 map ,即使这样也行不通。

有什么想法吗?谢谢!

最佳答案

Scaladoc 说

/**
* Semi-automatic codec derivation.
*
* This object provides helpers for creating [[io.circe.Decoder]] and [[io.circe.ObjectEncoder]]
* instances for case classes, "incomplete" case classes, sealed trait hierarchies, etc.

Map 不是密封特征层次结构的案例类或元素。

https://github.com/circe/circe/issues/216

Encode Map[String, MyCaseClass] into Seq[String, String] using circe

Circe and Scala's Enumeration type

关于scala - Circe Scala - 编码和解码 Map[] 和案例类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52707765/

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