本文采用java8forEach的方式,遍歷JSON中所有的KEY。
JSON格式如下:
"{"name":"tom","age":18,"email":"[email protected]","address":[{"province":"湖北省"},{"city":"武漢市"},{"disrtict":"武昌區"}]}
處理後得到如下結果:
address,addressprovincecitydisrtictname,nameage,ageemail
具體實現代碼如下:
package com.hyx.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.concurrent.atomic.AtomicInteger;
/**
* JsonUtil
*
* @author HYX
* @date 2020/5/18 21:40
*/
public class JsonUtil {
/**
* 遞歸讀取所有的key
*
* @param jsonObject 需要獲取key的
*/
public static StringBuffer getAllKey(JSONObject jsonObject) {
if (jsonObject == null || jsonObject.isEmpty()) {
return null;
}
StringBuffer stringBuffer = new StringBuffer();
int countKey=jsonObject.size();
AtomicInteger count= new AtomicInteger();
jsonObject.forEach((key,value)->{
count.addAndGet(1);
//判斷是否爲json最後一個key,如果不是則加逗號隔開
if(count.get()!=countKey){
stringBuffer.append(key).append(",");
}
stringBuffer.append(key);
if (jsonObject.get(key) instanceof JSONObject) {
JSONObject innerObject = (JSONObject) jsonObject.get(key);
stringBuffer.append(getAllKey(innerObject));
} else if (jsonObject.get(key) instanceof JSONArray) {
JSONArray innerObject = (JSONArray) jsonObject.get(key);
stringBuffer.append(getAllKey(innerObject));
}
});
return stringBuffer;
}
public static StringBuffer getAllKey(JSONArray json1) {
StringBuffer stringBuffer = new StringBuffer();
if (json1 == null || json1.size() == 0) {
return null;
}
json1.forEach(key->{
if (key instanceof JSONObject) {
JSONObject innerObject = (JSONObject) key;
stringBuffer.append(getAllKey(innerObject));
} else if (key instanceof JSONArray) {
JSONArray innerObject = (JSONArray) key;
stringBuffer.append(getAllKey(innerObject));
}
});
return stringBuffer;
}
private final static String st1 = "{\"name\":\"tom\",\"age\":18,\"email\":\"[email protected]\",\"address\":[{\"province\":\"湖北省\"},{\"city\":\"武漢市\"},{\"disrtict\":\"武昌區\"}]}";
private final static String st2 = "{name:\"tom\",age:18,email:\"[email protected]\"}";
public static void main(String[] args) {
System.out.println(st1);
JSONObject jsonObject1 = JSONObject.parseObject(st1);
StringBuffer stb = getAllKey(jsonObject1);
System.err.println(stb);
}
}