[英]scala iterate over JSON Array
虽然scala.util.parsing.json.JSON可以很好地工作,但是最好使用外部库(如json4s) ,该库具有流畅的scala API。
您可以像查询xml(如JsonPath)一样查询json。
下面是将json4s放入项目中后如何使用它的步骤。
首先添加以下导入
import org.json4s._
import org.json4s.native.JsonMethods._
现在通过执行以下操作创建一个Jvalue
val jsonA = """[{"foo": 4, "bar": "baz"},{"bla": 4, "bar": "bla"}]"""
val json = parse(jsonA)
您的json对象是
json: org.json4s.JValue = JArray(List(JObject(List((foo,JInt(4)), (bar,JString(baz)))), JObject(List((bla,JInt(4)), (bar,JString(bla))))))
获得第一个(第0个)孩子
val firstChild = (json)(0)
firstChild: org.json4s.JsonAST.JValue = JObject(List((foo,JInt(4)), (bar,JString(baz))))
获取此firstChild的字符串表示形式
val firstChildString = compact(render(firstChild))
firstChildString: String = {"foo":4,"bar":"baz"}
有关更多信息,请参见json4s主页中的JSON查询部分。
注意:要导入jar,您可以使用maven / gradle或通过:require命令将其导入scala repl。
JSON表示法希望您用双引号将变量引起来:
val jsonA = """[{"foo": 4, "bar": "baz"},{"bla": 4, "bar": "bla"}]"""
val sJson = parseFull(jsonA).get.asInstanceOf[List[Map[String,String]]] // List(Map(foo -> 4.0, bar -> baz), Map(bla -> 4.0, bar -> bla))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.