json中key大小寫轉換


最近工作中遇到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”:”“,}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM