我遵循以下示例https://github.com/leon/play-salat/tree/master/sample。在我的数据模型中,我有列表,我试图采用该模型。
我得到以下编译错误:[error] /home/malte/workspace/bdt/app/models/Ballot.scala:26: No Json deserializer found for type List[models.Position]. Try to implement an implicit Writes or Format for this type.
[error] "positions" -> b.positions,
[error] ^
[error] /home/malte/workspace/bdt/app/models/Ballot.scala:33: No Json deserializer found for type List[models.Position]. Try to implement an implicit Reads or Format for this type.
[error] (__ 'values).read[List[Position]]).map { l => l.getOrElse(Nil) } ~
对于类型"Position",我有隐式读取和写入,但如何使它为List[Position] ?我的隐式写和读:
implicit val ballotJsonWrite = new Writes[Ballot] {
def writes(b: Ballot): JsValue = {
Json.obj(
"positions" -> b.positions,
"title" -> b.title)
}
}
implicit val ballotJsonRead = (
(__ 'positions).readNullable(
(__ 'values).read[List[Position]]).map { l => l.getOrElse(Nil) } ~
(__ 'title).read[String])(Ballot.apply _)
对于读取,我遵循为列表集合创建隐式json读取,这可能从输入json中缺失,但我得到上面提到的错误。
实际上现在我在最新版本的salat中发现了这一点。Json被自动用于在模型和Json对象之间移动。我把整个零件都去掉了,现在它运行得很顺利。
https://github.com/novus/salat/wiki/JSON