题目
{
"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)
}
})
}