2
如何爲我的People
案例類創建play.api.libs.Reads
?爲JSON集類型定義`Reads`
scala> type Id = Long
defined type alias Id
scala> case class People(names: Set[Id])
defined class People
scala> implicit val PeopleReads: Reads[People] = (
| (__ \ "names").read[Set[Id]])(People)
<console>:21: error: overloaded method value read with alternatives:
(t: Set[Id])play.api.libs.json.Reads[Set[Id]] <and>
(implicit r: play.api.libs.json.Reads[Set[Id]])play.api.libs.json.Reads[Set[Id]]
cannot be applied to (People.type)
(__ \ "names").read[Set[Id]])(People)
'__'與'JsPath'相同嗎?如果是這樣,是__'首選?如果是這樣,爲什麼? –
是的,這只是一個別名,它旨在提供特定種類的DSL。這不是我通常親自進入的事情,但是在這種情況下,我碰巧喜歡這種語法。我認爲除此之外,還有其他的「首選」 - 你可以拿走它或者放棄它。 –
您能否多說'...讀[Set [Id]]。map(People)'? 「人」功能的簽名是什麼?我知道'People'是一個case類,但我理解map:'M [A] .map(A => B):M [B]' –