回覆列表
  • 1 # 聊推

    java.util.Map物件中包含Map和List<Map>,怎麼把所有的key前加統一標識,目前是用了正則表示式,還有其他好方法嗎

    舉個例子

    新方法:

    public static JSONObject transObject(JSONObject o1,String prefix){

    if(o1 == null){

    return null;

    }

    JSONObject o2=new JSONObject();

    o1.forEach((key, value) -> {

    if(value.getClass().toString().endsWith("JSONObject")){

    o2.put(prefix+":"+key, transObject((JSONObject)value,prefix));

    }else if(value.getClass().toString().endsWith("JSONArray")){

    o2.put(prefix+":"+key, transArray(o1.getJSONArray(key),prefix));

    }else{

    o2.put(prefix+":"+key, value);

    }

    });

    return o2;

    }

    public static JSONArray transArray(JSONArray o1,String prefix){

    if(o1 == null){

    return null;

    }

    JSONArray o2 = new JSONArray();

    for (int i = 0; i < o1.size(); i++) {

    Object jArray=o1.getJSONObject(i);

    if(jArray.getClass().toString().endsWith("JSONObject")){

    o2.add(transObject((JSONObject)jArray,prefix));

    }else if(jArray.getClass().toString().endsWith("JSONArray")){

    o2.add(transArray((JSONArray)jArray,prefix));

    }

    }

    return o2;

    }

    目前所用方法

    .replaceAll("([\"])([^:\"" ]*[\"][\\s]?:)", "$1"+prefix+":"+"$2")

    原文

    {

    "CUST_ID": "200004343813",

    "TRADE_SOURCE": [{

    "WORK_ID": "ACCEPT_GRADE",

    "ACCEPT_TYPE": "1"

    }, {

    "WORK_ID": "BOOK_FLAG",

    "ACCEPT_TYPE": "0"

    }, {

    "WORK_ID": "PRE_ACCEPT_TAG",

    "ACCEPT_TYPE": "0"

    }

    ],

    "TRADE_JUDGE_OWE_TAG": "2"

    }

    轉換後

    {

    "a:CUST_ID": "200004343813",

    "a:TRADE_SOURCE": [{

    "a:WORK_ID": "ACCEPT_GRADE",

    "a:ACCEPT_TYPE": "1"

    },

    {

    "a:WORK_ID": "BOOK_FLAG",

    "a:ACCEPT_TYPE": "0"

    },

    {

    "a:WORK_ID": "PRE_ACCEPT_TAG",

    "a:ACCEPT_TYPE": "0"

    }],

    "a:TRADE_JUDGE_OWE_TAG": "2"

    }

  • 中秋節和大豐收的關聯?
  • 電腦破圖後無法開機怎麼處理?