Scala 遍历打印com.alibaba.fastjson.JSONObject所有的Key和Value

在Scala中,可以使用Fastjson库处理JSON数据。要遍历打印Fastjson中的JSONObject所有的Key和Value,可以通过递归方式遍历,并使用getOrDefault方法逐一输出其中的键值对。
代码如下,:

import com.alibaba.fastjson.JSONObject

object Main extends App {
    
    
  val jsonString =
    """
      |{
      |  "name": "Tom",
      |  "age": 28,
      |  "sex": "male",
      |  "address": {
      |    "province": "Beijing",
      |    "city": "Haidian"
      |  }
      |}
      |""".stripMargin // 定义JSON字符串

  val json = JSONObject.parseObject(jsonString) // 将字符串解析为JSON对象
  printJson(json)

  // 递归遍历JSONObject并输出其中的键值对
  def printJson(json: JSONObject): Unit = {
    
    
    import scala.collection.JavaConverters._
    json.entrySet.asScala.foreach((entry) => {
    
     // 转换Map.Entry为Scala中的Tuple2,并调用foreach方法逐一遍历map中的键值对
      print(entry.getKey + ":") // 输出key
      print(entry.getValue.toString) // 输出value
      println()
      entry.getValue match {
    
     // 对于嵌套的JSONObject或JSONArray,需要递归调用printJson函数来输出其中的键值对
        case obj: JSONObject =>
          printJson(obj)
        case _ =>
      }
    })
  }
}

注意,在递归遍历JSONObject时,需要使用match匹配JSONObject类型的值,并调用asScala方法将JSONObject中的Java集合转换为Scala集合。同时还要注意处理嵌套的JSONObject和其他类型的值。

猜你喜欢

转载自blog.csdn.net/programmer589/article/details/130297597