JSON转Map工具类

自己写的一个复杂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");
        }

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值