json中key大小写转换

mac2022-06-30  22

最近工作中遇到json格式的字符串中的key为大写的,需要转换成小写的来解析,开始想使用正则来替换,结果不是很方便,后来考虑把JSONObject重新来封装。

如下json格式:{PWACHECKINFO:{QMART:\”TEST\”,NTNUM:\”50\”,ECRULE1:\”测试中1\”,ECRULE2:”,ECRULE3:”,ECRULE4:”,ECRULE5:”,ECRULE6:”,”}

 public static void main(String[] args) {

JSONObject jsonObject = JSONObject.fromObject(json);        

      //方法一:重新解析jsonObject中的key,转换为小写的key        jsonObject = transToLowerObject(jsonObject);        System.out.println(jsonObject);

      String regex = “(\\{|\\,)[a-zA-Z0-9]+:”;                Pattern pattern = Pattern.compile(regex);        StringBuffer sb = new StringBuffer();        // 方法二:正则替换        Matcher m = pattern.matcher(json);        while (m.find()) {            m.appendReplacement(sb, m.group().toLowerCase());        }        m.appendTail(sb);        String msg = sb.toString();

  System.out.println(msg);        }

 /**     * json大写转小写     *      * @param jSONArray1 jSONArray1     * @return JSONObject     */    public static JSONObject transToLowerObject(JSONObject jSONArray1) {        JSONObject jSONArray2 = new JSONObject();        Iterator it = jSONArray1.keys();        while (it.hasNext()) {            String key = (String) it.next();            Object object = jSONArray1.get(key);            if (object.getClass().toString().endsWith(“String”)) {                jSONArray2.accumulate(key.toLowerCase(), object);            } else if (object.getClass().toString().endsWith(“JSONObject”)) {                jSONArray2.accumulate(key.toLowerCase(), transToLowerObject((JSONObject) object));            } else if (object.getClass().toString().endsWith(“JSONArray”)) {                jSONArray2.accumulate(key.toLowerCase(), transToArray(jSONArray1.getJSONArray(key)));            }        }        return jSONArray2;    }        /**     * jsonArray转jsonArray     *      * @param jSONArray1 jSONArray1     * @return JSONArray     */    public static JSONArray transToArray(JSONArray jSONArray1) {        JSONArray jSONArray2 = new JSONArray();        for (int i = 0; i < jSONArray1.size(); i++) {            Object jArray = jSONArray1.getJSONObject(i);            if (jArray.getClass().toString().endsWith(“JSONObject”)) {                jSONArray2.add(transToLowerObject((JSONObject) jArray));            } else if (jArray.getClass().toString().endsWith(“JSONArray”)) {                jSONArray2.add(transToArray((JSONArray) jArray));            }        }        return jSONArray2;    }

 

转换后的格式如:

:{“qmart”:”TEST”,”ntnum”:”50”,”ecrule1”:”测试中1”,”ecrule2”:”“,”ecrule3”:”“,}

转载于:https://www.cnblogs.com/whc321/p/7206029.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)