json - 如何迭代org.json4s.JsonAST.JValue这是一个JSON对象数组,以分别在Scala中对每个对象进行处理?

原文 标签 json scala json4s

我有一个示例数组:

[{
    "abc":"1",
    "de":"1"
},
{
    "fgh":"2",
    "ij":"4"
}]


这是一个org.json4s.JsonAST.JValue。

如何遍历数组中的每个对象,分别对每个对象进行操作?

最佳答案

以下是您的json。

scala> json
res2: org.json4s.JValue = JArray(List(JObject(List((abc,JString(1)), (de,JString(1)))),
        JObject(List((fgh,JString(2)), (ij,JString(4))))))


有几种方法。


使用for语法

for {
  JArray(objList) <- json
  JObject(obj) <- objList
} {
  // do something
  val kvList = for ((key, JString(value)) <- obj) yield (key, value)
  println("obj : " + kvList.mkString(","))
}

转换为scala.collection对象

val list = json.values.asInstanceOf[List[Map[String, String]]]
//=> list: List[Map[String,String]] = List(Map(abc -> 1, de -> 1), Map(fgh -> 2, ij -> 4))


要么

implicit val formats = DefaultFormats
val list = json.extract[List[Map[String,String]]]
//=> list: List[Map[String,String]] = List(Map(abc -> 1, de -> 1), Map(fgh -> 2, ij -> 4))


做点什么

for (obj <- list) println("obj : " + obj.toList.mkString(","))



两个输出是

obj : (abc,1),(de,1)
obj : (fgh,2),(ij,4)


json4s的文档为here

相关文章:

regex - 从类型为字符串的网址中提取网址

maven - Spark Streaming + json4s-jackson依赖问题

json - json4s中`render`的目的

php - 定期下载外部JSON

javascript - 在JavaScript和JSON中传递Google脚本值

java - 将JSON数组发布到Spring Boot 2 JPA中

javascript - 从服务器检索JSON.parse()字符串

java - 创建NetCDF:NoSuchFieldError:pdsHash打开文件时

regex - Scala RegEx匹配失败,Java成功

json - json4s-简单字符串值的解析失败