何で今更かというと、これつかえねーかなと思ったから。
最初は、Forms でのバインドをしようとしたのだけど、早速フォーラムが見つかりました。
キーワードは Play recursive form
https://groups.google.com/forum/#!topic/play-framework/Ya1hPmR2QtY
この中で、「Form はそもそもHttpRequestを前提にしてんだからそんな事すんじゃねぇ」と言われていて、「Play Json 使え」とも誰か言ってた。
そこで、キーワード変更で、「Play recursive json」でググったところ、
を発見。
2.4 になってかなり使いやすくなってきてたので、これでざっくり実装してみた。
import play.api.libs.json._ // JSON library import play.api.libs.json.Reads._ // Custom validation helpers import play.api.libs.functional.syntax._ // Combinator syntax case class Nested(name: String, content:String, friends: Seq[Nested]) implicit lazy val userReads: Reads[Nested] = ( (__ \ "name").read[String] and (__ \ "content").read[String] and (__ \ "friends").lazyRead(Reads.seq[Nested](userReads)) )(Nested) val json = Json.parse("""{"name":"Example", "content":"content", "friends":[{"name":"ChildName", "content":"childContent", "friends":[]}]}""") val result = json.validate[Nested].asOpt println(result)
して結果が
Some(Nested(Example,content,List(Nested(ChildName,childContent,List()))))
わーい。
Json で設定ファイルとかできるでw