[英]Parsing JSON in Play2 and Scala without Data Type
{
"people": [
{
"name": "Jack",
"age": 15
},
{
"name": "Tony",
"age": 23
},
{
"name": "Mike",
"age": 19
}
]
}
那是我试图解析的json样本。 我希望能够对每个人进行foreach操作并打印出他们的姓名和年龄。
我知道如何在单个项目或特定编号项目时处理json数组。 我不知道如何遍历所有项目。
谁能帮我吗?
使用Play JSON库有很多方法可以做到这一点。 主要区别在于Scala案例类的使用与否。
给出一个简单的json
val json = Json.parse("""{"people": [ {"name":"Jack", "age": 19}, {"name": "Tony", "age": 26} ] }""")
您可以使用案例类和Json宏自动解析数据
import play.api.libs.json._
case class People(name: String, age: Int)
implicit val peopleReader = Json.reads[People]
val peoples = (json \ "people").as[List[People]]
peoples.foreach(println)
或者没有案例类,手动
import play.api.libs.json._
import play.api.libs.functional.syntax._
implicit val personReader: Reads[(String, Int)] = (
(__ \ "name").read[String] and
(__ \ "age").read[Int]
).tupled
val peoples = (json \ "people").as[List[(String, Int)]]
peoples.foreach(println)
换句话说,查看关于这个主题的非常完整的文档:) http://www.playframework.com/documentation/2.1.0/ScalaJson
如果您没有对象类型或者不想编写Reads,则可以使用.as[List[JsValue]]
val jsValue = Json.parse(text)
val list = (jsValue \ "people").as[List[JsValue]]
然后
list.foreach(a => println((a \ "name").as[String]))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.