所见即所得JSON

题目

 {
 "A":"a1",
 "B":"b1",
 "C":{
   "D":"d1",
   "E":{
     "F":{
        "G":[{"H":"h1"},{"H":"h2"}]
         }
       }
     }
 }

输出

A:a1
B:b1
C.D:d1
C.E.F.G[0].H:h1
C.E.F.G[1].H:h2

code

  def jsons(par: String, str: String): Unit = {
    val json = JSON.parseObject(str)
    json.entrySet().forEach(e=>{
      val value = e.getValue
      val key = e.getKey
      // 先找出当前路径
      val curPath = if (par.nonEmpty) par + ":" + key else "" + key

      // 如果获得的字符串以 { 开头则是一个对象 如果是以 [ 开头则是一个数组
      // 其他情况则是需要输出的字符串
      if (value.toString.startsWith("{")) {
        jsons(curPath, value.toString)
      } else if (value.toString.startsWith("[")) {
        val arr = JSON.parseArray(value.toString)
        arr.toArray.indices.foreach(i=>{
          val a = arr.get(i)
          // 如果是数组看起来还需要加上元素下标
          jsons(curPath+s"[$i]", a.toString)
        })
      } else {
        println(curPath +":"+ value.toString)
      }
    })
  }
posted @ 2021-10-09 15:58  一根咸鱼干  阅读(27)  评论(0编辑  收藏  举报