本文采用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);}
}