我正在尝试在Play Framework 2.1.3中处理Ajax POST请求。发布数据是一个JSON对象,并具有以下树状结构:
{ id: "a", name: "myname", kids : [{ id: "a1", name : "kid1", kids: []}, {id: "a2", name: "kid2", kids: [{id: "aa1", name :"grandkid", kids: []}]}]
我想将“孩子”任意套牢。我要记住的类是这样的(我意识到递归性可能是有问题的):
case class Person {
id: String,
name: String,
kids: Array[Person]
}
我会想到的格式:
implicit val personFormat:Format[Person] = Json.format[Person]
播放在我编写的格式上引发错误:
类型不匹配; 找到:controllers.Resources.Person所需:Array [controllers.Resources.Person]
我知道Play具有树形结构。我找不到有关如何将其绑定到JSON读取的示例/文档。
感谢您的任何帮助,谢谢
您将需要一个递归值,例如:
implicit val jsonReads: Reads[Person] = ((__ \ "id").read[String] and (__ \ "name").read[String] and (__ \ "kids").read[Seq[Person]])(apply _)
(我将集合类型从Array更改为Seq,因为它更通用,并且允许您在不影响下行代码的情况下更改实现。)
这使用此处记录的语法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句