gpt4 book ai didi

scala - 带有可变参数的案例类的隐式 jsonFormat

转载 作者:行者123 更新时间:2023-12-02 02:57:54 27 4
gpt4 key购买 nike

我有一个包含可变参数的案例类,其隐式 jsonFormat 如下:

import spray.json._
case class Colors(name: String*)
object MyJsonProtocol extends DefaultJsonProtocol {
implicit val colorFormat = jsonFormat1(Colors)
}
import MyJsonProtocol._
Colors("CadetBlue").toJson

它会引发错误:

error: type mismatch;
found : Color2.type
required: Seq[String] => Color2
Note: implicit value colorFormat is not applicable here because it comes after the application point and it lacks an explicit result type
implicit val colorFormat = jsonFormat1(Color2)
^

我也尝试过:

implicit val colorFormat = jsonFormat1(Colors.apply)

这导致了不同的(运行时!)异常:

java.lang.RuntimeException: Cannot automatically determine case class field names and order for 'Colors', please use the 'jsonFormat' overload with explicit field name specification

以下内容:

implicit val colorFormat = jsonFormat(Colors, "name")

引发前一个错误

甚至可以使用可变参数为案例类定义隐式 jsonFormat?

最佳答案

我也经历过这个异常,但是在我的例子中,这是由于案例类中的“val”定义(而不是作为传递的参数)。

有问题案例类别:

case class Color(name: String) {
val code: Int = ...
}

工作案例类别:

case class Color(name: String) {
def code: Int = ...
}

这有点不幸,因为现在每次调用都会计算“代码”。

(使用 Akka Http 版本 - 10.1.1)

关于scala - 带有可变参数的案例类的隐式 jsonFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28212080/

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