本文采用java8forEach的方式,遍历JSON中所有的KEY。
JSON格式如下:
"{"name":"tom","age":18,"email":"35354353@qq.com","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\":\"35354353@qq.com\",\"address\":[{\"province\":\"湖北省\"},{\"city\":\"武汉市\"},{\"disrtict\":\"武昌区\"}]}";
private final static String st2 = "{name:\"tom\",age:18,email:\"35354353@qq.com\"}";
public static void main(String[] args) {
System.out.println(st1);
JSONObject jsonObject1 = JSONObject.parseObject(st1);
StringBuffer stb = getAllKey(jsonObject1);
System.err.println(stb);
}
}