Самый простой способ - создать case class
, например:
case class MyObj(header:String, value: Seq[Map[String, String]])
Затем вам просто нужно добавить одну строку для сортировки, например:
import play.api.libs.json._
object MyObj {
implicit val jsonFormat: OFormat[MyObj] = Json.format[MyObj]
}
Теперь вы получитехороший case class
, с которым вы можете работать:
val json =
Json.parse(
"""{
"header" : "header value",
"value" : [
{
"a" : "a_val",
"b" : "b_val",
"c" : "c_val"
},
{
"a" : "a_val",
"b" : "b_val",
"c" : "c_val"
}
]
}""")
Вот пример, как получить все "a"
.
json.validate[MyObj] match {
case JsSuccess(myObj, _) =>
val allAs =myObj.value.flatMap(m => m.get("a").toSeq)
println(allAs) // >> Vector(a_val, a_val)
case e:JsError => // handle error
}
Это дает вам:
json.validate[MyObj]
возвращает JsSuccess(MyObj(header value,Vector(Map(a -> a_val, b -> b_val, c -> c_val), Map(a -> a_val, b -> b_val, c -> c_val))),)
Возвращает println
: Vector(a_val, a_val)
Это описано здесь в документации: Автоматическое отображение JSON