ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

json数据的key的读取和替换

2019-08-06 14:50:55  阅读:350  来源: 互联网

标签:jsonObj 读取 get JSONArray JSONObject json keyMap key




读取json的key:

/**
     * @Description: 递归读取所有的key
     * @Param:
     * @return:
     * @throws Exception
     * @author: hw
     * @date: 2019/7/31 15:18
     */
    public static Set<String> getAllKey(JSONObject jsonObject) {
        Set<String> myset = new HashSet<>();
        Iterator<String> keys = jsonObject.keySet().iterator();// jsonObject.keys();
        while (keys.hasNext()) {
            String key = keys.next();
            myset.add(key.toString());
            if (jsonObject.get(key) instanceof JSONObject) {
                JSONObject innerObject = (JSONObject) jsonObject.get(key);
                myset.addAll(getAllKey(innerObject));
            } else if (jsonObject.get(key) instanceof JSONArray) {
                JSONArray innerObject = (JSONArray) jsonObject.get(key);
                myset.addAll(getAllKey(innerObject));
            }
        }
        return myset;
    }

    public static Set<String> getAllKey(JSONArray json1) {
        Set<String> myset = new HashSet<>();
        if (json1 != null ) {
            Iterator i1 = json1.iterator();
            while (i1.hasNext()) {
                Object key = i1.next();
                if (key instanceof  JSONObject) {
                    JSONObject innerObject = (JSONObject) key;
                    myset.addAll(getAllKey(innerObject));
                } else if (key instanceof JSONArray) {
                    JSONArray innerObject = (JSONArray) key;
                    myset.addAll(getAllKey(innerObject));
                }
            }
        }
        return myset;
    }

  

替换json的key:

/**
    * @Description: 替换json数据的key
    * @Param:
    * @return:
    * @throws Exception
    * @author: hw
    * @date: 2019/7/31 16:22
    */
    public static JSONObject changeJsonObj(JSONObject jsonObj,Map<String, String> keyMap) {
        JSONObject resJson = new JSONObject();
        Set<String> keySet = jsonObj.keySet();
        for (String key : keySet) {
            String resKey = keyMap.get(key) == null ? key : keyMap.get(key);
            try {
                if (jsonObj.get(key) instanceof JSONObject) {
                    JSONObject jsonobj1 = (JSONObject) jsonObj.get(key);
                    resJson.put(resKey, changeJsonObj(jsonobj1, keyMap));
                } else if (jsonObj.get(key) instanceof JSONArray) {
                    JSONArray jsonArr = (JSONArray) jsonObj.get(key);
                    resJson.put(resKey, changeJsonArr(jsonArr, keyMap));
                }else {
                    resJson.put(resKey, jsonObj.get(key));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return resJson;
    }

    public static JSONArray changeJsonArr(JSONArray jsonArr,Map<String, String> keyMap) {
        JSONArray resJson = new JSONArray();
        for (int i = 0; i < jsonArr.size(); i++) {
            JSONObject jsonObj = jsonArr.getJSONObject(i);
            resJson.add(changeJsonObj(jsonObj, keyMap));
        }
        return resJson;
    }

  

测试方法:

public static void main(String[] args) {
        String test = "{\n" +
                "\t\"ret\": \"0\",\n" +
                "\t\"retMsg\": null,\n" +
                "\t\"count\": 1,\n" +
                "\t\"processCost\": null,\n" +
                "\t\"data\": [{\n" +
                "\t\t\t\"moniid\": \"11\",\n" +
                "\t\t\t\"serialnumber\": \"12\",\n" +
                "\t\t\t\"monitype\": \"13\"\n" +
                "\t\t},\n" +
                "\t\t{\n" +
                "\t\t\t\"moniid\": \"22\",\n" +
                "\t\t\t\"serialnumber\": \"22\",\n" +
                "\t\t\t\"monitype\": \"23\"\n" +
                "\t\t},\n" +
                "\t\t{\n" +
                "\t\t\t\"moniid\": \"33\",\n" +
                "\t\t\t\"serialnumber\": \"32\",\n" +
                "\t\t\t\"monitype\": \"33\"\n" +
                "\t\t}\n" +
                "\t]\n" +
                "}";

        Map<String, String> keyMap = new HashMap<String, String>();
        keyMap.put("count", "param1");
        keyMap.put("processCost", "param2");
        keyMap.put("desc", "param3");
        keyMap.put("moniid", "param4");
        keyMap.put("serialnumber", "param5");
        keyMap.put("monitype", "param6");
        keyMap.put("data", "param7");
        JSONObject jsonObj = changeJsonObj(JSONObject.parseObject(test),keyMap);
        System.out.println(jsonObj.toString());
    }

  

标签:jsonObj,读取,get,JSONArray,JSONObject,json,keyMap,key
来源: https://www.cnblogs.com/weihuang6620/p/11308832.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有