迭代解决多层嵌套json 转map

最近工作需要用到json 转map ,在网上看到了一个方法,但并不能解决多层嵌套json,在此对这个方法进行了迭代处理,解决这个问题

import net.minidev.json.{JSONObject}
import net.minidev.json.parser.JSONParser

/**
  * 将json转化为Map
  * @param json 输入json字符串
  * @return
  * */
def json2Map(json : String) : mutable.HashMap[String,Object] = {

  val map : mutable.HashMap[String,Object]= mutable.HashMap()

  val jsonParser =new JSONParser()

  //将string转化为jsonObject
  val jsonObj: JSONObject = jsonParser.parse(json).asInstanceOf[JSONObject]

  //获取所有键
  val jsonKey = jsonObj.keySet()

  val iter = jsonKey.iterator()

  while (iter.hasNext){
    val field = iter.next()
    val value = jsonObj.getOrElse(field,null).toString

    if(value.startsWith("{")&&value.endsWith("}")){
     //val value1 = mapAsScalaMap(jsonObj.getOrElse(field,null).asInstanceOf[util.HashMap[String, String]])
      val value1 = json2Map(value)
      map.put(field,value1)
    }else{
      map.put(field,value)
    }
  }
  map
}


你可能感兴趣的:(迭代解决多层嵌套json 转map)