当前位置: 代码迷 >> 综合 >> jdk8 获取fastJson中所有的KEY
  详细解决方案

jdk8 获取fastJson中所有的KEY

热度:84   发布时间:2024-01-10 00:46:13.0

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

 

  相关解决方案