我有一个非常简单的JSON,如下所示,我想获得sJson[0], sJson[1]
个对象,我该如何实现?
scala> val jsonA = "[{'foo': 4, 'bar': 'baz'},{'bla': 4, 'bar': 'bla'}]"
jsonA: String = [{'foo': 4, 'bar': 'baz'},{'bla': 4, 'bar': 'bla'}]
scala> val sJson = parseFull(jsonA)
sJson: Option[Any] = None
scala> println(sJson.toString())
None
答案 0 :(得分:2)
虽然scala.util.parsing.json.JSON运行良好,但最好使用像json4s这样具有流畅scala api的外部库。
您可以像查询xml一样查询json(如JsonPath)。
以下是在项目中使用json4s后如何使用json4s的步骤。
首先添加以下导入
import org.json4s._
import org.json4s.native.JsonMethods._
现在通过
创建一个Jvalueval 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 部分。
注意:要导入jars,您可以使用maven / gradle或使用:require 命令将它们导入scala repl。
答案 1 :(得分:1)
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))