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){
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));
目前所用方法
.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",
],
"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:TRADE_JUDGE_OWE_TAG": "2"
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"
}