gpt4 book ai didi

json - 在Scala Play中进行读写以获取自定义类的列表

转载 作者:行者123 更新时间:2023-12-04 21:56:24 30 4
gpt4 key购买 nike

所以我的项目有两个类

case class Item(id: Int, name: String)


case class Order(id: Int, items: List[Item])

我正在尝试对Order进行读写属性,但出现编译器错误,提示:

“未找到unapply或unapplySeq函数”

在我的 Controller 中,我有以下内容:
implicit val itemReads = Json.reads[Item]
implicit val itemWrites = Json.writes[Item]
implicit val listItemReads = Json.reads[List[Item]]
implicit val listItemWrites = Json.writes[List[Item]]

该代码适用于 itemReadsitemWrites,但不适用于底部的两个。谁能告诉我我要去哪里错了,我是Play框架的新手。

感谢您的时间。

最佳答案

No unapply or unapplySeq function found”错误是由以下两个原因引起的:

implicit val listItemReads = Json.reads[List[Item]]
implicit val listItemWrites = Json.writes[List[Item]]

只是把它们扔掉。 As Ende said,Play知道如何处理列表。

但是您也需要 ReadsWrites作为 Order!并且由于您同时进行读写操作,因此最简单的方法是定义 Format ,即 ReadsWrites特性的混合体。这应该工作:
case class Item(id: Int, name: String)

object Item {
implicit val format = Json.format[Item]
}

case class Order(id: Int, items: List[Item])

object Order {
implicit val format = Json.format[Order]
}

上面的 ordering is significant; Item和伴随对象必须在 Order之前。

因此,一旦有了所有需要的隐式转换器,关键就是使它们在 Controller 中正确可见。上面是一种解决方案,但是还有其他方法,正如我在 trying to do something similar之后了解到的那样。

关于json - 在Scala Play中进行读写以获取自定义类的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34437520/

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