原始json样式:
{
"p_end": "20190819",
"partitionNum": "1000",
"time_name": "createTime",
"interval_15": [{
"templet1": [{
"driver": "devFp",
"match": "phone"
}, {
"driver": "devFp",
"match": "ip"
}]
}, {
"templet2": [{
"driver": "inAccount",
"match": "amount"
}]
}]
}
import com.alibaba.fastjson.{JSON, JSONArray, JSONObject}
var jsonStr = "{\"p_end\": \"20190819\",\"partitionNum\": \"1000\",\"time_name\": \"createTime\",\"interval_15\": [{\"templet1\":[{\"driver\":\"devFp\",\"match\":\"phone\"},{\"driver\":\"devFp\", \"match\":\"ip\"}]},{\"templet2\":[{\"driver\":\"inAccount\", \"match\":\"amount\"}]}]}"
val js = JSON.parseObject(jsonStr)
val fieldAll = js.keySet().iterator()
println(fieldAll)
while (fieldAll.hasNext) {
val field = fieldAll.next() //模板名称
//每个模板里是一个JsonArray
if (field.contains("interval")){
val interval = field.split("_")(1)
val jsArray = js.getJSONArray(field)
println("*********"+jsArray)
for (i <- 0 until jsArray.size()) {
println(i)
val jsontemplet = JSON.parseObject(jsArray.getString(i))
println("~~~~~~~~~~"+jsontemplet)
val fieldtemplet = jsontemplet.keySet().iterator()
while(fieldtemplet.hasNext){
val f = fieldtemplet.next() //模板名称
if ("templet1".equals(f)) {
println("111111111111111")
}
if ("templet2".equals(f)) {
println("22222")
}
}
}
}
}
结果:
js: com.alibaba.fastjson.JSONObject = {"time_name":"createTime","p_end":"20190819","partitionNum":"1000","interval_15":[{"templet1":[{"driver":"devFp","match":"phone"},{"driver":"devFp","match":"ip"}]},{"templet2":[{"driver":"inAccount","match":"amount"}]}]}
fieldAll: java.util.Iterator[String] = java.util.HashMap$KeyIterator@707414e0
java.util.HashMap$KeyIterator@707414e0
*********[{"templet1":[{"driver":"devFp","match":"phone"},{"driver":"devFp","match":"ip"}]},{"templet2":[{"driver":"inAccount","match":"amount"}]}]
0
~~~~~~~~~~{"templet1":[{"driver":"devFp","match":"phone"},{"driver":"devFp","match":"ip"}]}
111111111111111
1
~~~~~~~~~~{"templet2":[{"driver":"inAccount","match":"amount"}]}
22222