自己写的一个复杂JSON转换为Map的工具类,有兴趣的小伙伴可以提供建议
可以解析复杂的Map、List相互嵌套的JSON
使用方法:new一个Map 将map传入后,直接调用该map.get()即可,无需返回值
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* @author 学渣自救
*/
public class JsonParseUtil {
/**
* @param jsonMap:
* @param jsonStr:
* @return: void
* @author: 学渣自救
* @date: 2020/8/28 10:13
* @description:将JSON转换为Map
*/
public static void parseJSON2Map(HashMap jsonMap, String jsonStr) throws Exception{
if (jsonStr.startsWith("[]")){
return;
}else if(jsonStr.startsWith("[")){
ArrayList list = new ArrayList();
parseJSONArray2Map(list,jsonStr);
jsonMap.put("data",list);
}else {
parseJSONObject2Map(jsonMap,jsonStr);
}
}
private static void parseJSONObject2Map(HashMap jsonMap, String jsonStr) throws Exception{
//字符串转换成Map对象
HashMap json = JSONObject.parseObject(jsonStr,HashMap.class);
//最外层JSON解析
for(Object k : json.keySet()){
//JSONObject 实际上相当于一个Map集合,所以我们可以通过Key值获取Value
Object v = json.get(k);
//构造一个包含上层keyName的完整keyName
if(v instanceof JSONObject){
//如果内层还是JSONObject的话,继续解析
HashMap map = new HashMap();
jsonMap.put(k,map);
parseJSONObject2Map((HashMap) jsonMap.get(k),((JSONObject) v).toJSONString());
}else if(v instanceof JSONArray){
if(((JSONArray) v).size() >= 0){
ArrayList list = new ArrayList<>();
jsonMap.put(k,list);
parseJSONArray2Map((ArrayList) jsonMap.get(k),((JSONArray) v).toJSONString());
}
}else{
jsonMap.put(k, v);
}
}
}
private static void parseJSONArray2Map(ArrayList jsonList, String jsonStr) throws Exception{
//字符串转换成Map对象
ArrayList json = JSONObject.parseObject(jsonStr,ArrayList.class);
for (Object v:json
) {
if (v instanceof JSONObject) {
//如果内层还是JSONObject的话,继续解析
HashMap m = new HashMap();
jsonList.add(m);
parseJSONObject2Map(m, ((JSONObject) v).toJSONString());
} else if (v instanceof JSONArray) {
if (((JSONArray) v).size() >= 0) {
ArrayList<HashMap> list = new ArrayList<>();
jsonList.add(list);
parseJSONArray2Map(list, ((JSONArray) v).toJSONString());
}
} else {
jsonList.add(v);
}
}
}
public static void main(String[] args) throws Exception {
//构建请求体
HashMap parameters = new HashMap();
HashMap parameters1 = new HashMap();
HashMap conditions = new HashMap();
HashMap params = new HashMap();
List parametersList = new ArrayList();
List parametersList1 = new ArrayList();
parametersList.add(parameters);
parametersList1.add(parameters1);
parameters.put("type","java.lang.String");
parameters.put("value","storeCode");
parameters1.put("type","java.lang.String");
parameters1.put("value","storeCode");
parametersList.add(parametersList1);
conditions.put("operation","businessCode.equals");
conditions.put("parameters",parametersList);
params.put("conditions",conditions);
params.put("pageSize",1);
params.put("page",0);
params.put("probePages",-1);
//HashMap response = JSONObject.parseObject(JSONObject.toJSONString(params),HashMap.class);
HashMap returnData = new HashMap();
parseJSON2Map(returnData, JSONObject.toJSONString(params));
if(returnData.size() >= 0){
System.out.println("ssss");
}
}
}