我有3个case类:创建读取的列表[案例类]
scala> case class Friend(id: Long, hobbies: List[Long])
defined class Friend
scala> case class Kid(friends: List[Friend])
defined class Kid
scala> case class Parent(kids: List[Kid])
defined class Parent
它们可以显示在层次结构(父母有孩子(一个或多个)的朋友(S)有(ID和爱好)。
Parent
---> Kid
---> Friend
---> id: Long
---> hobbies: List[Long]
我创建了FriendsReads
(尽管作为senia指出here,我可能只需要使用
scala> implicit val FriendReads: Reads[Friend] = Json.format[Friend]
FriendReads: play.api.libs.json.Reads[Friend] = [email protected]
scala> implicit val FriendReads: Reads[Friend] = (
| (JsPath \ "id").read[Long] and
| (JsPath \ "hobbies").read[List[Long]]
|)(Friend.apply _)
FriendReads: play.api.libs.json.Reads[Friend] = [email protected]
然后,当我试图创建KidReads
时,我遇到了编译时问题。
scala> implicit val KidReads: Reads[Kid] = (
| (JsPath \ "friends").read[List[Friend]]
|)(Kid.apply _)
<console>:40: error: overloaded method value read with alternatives:
(t: List[Friend])play.api.libs.json.Reads[List[Friend]] <and>
(implicit r: play.api.libs.json.Reads[List[Friend]])play.api.libs.json.Reads[List[Friend]]
cannot be applied to (List[Friend] => Kid)
(JsPath \ "friends").read[List[Friend]]
^
如何解决此错误?
谢谢,特拉维斯,你是对的。我看到一种新类型,忘记检查你的有用答案。我的错。 –