在写接口时,通常需要把A项目的报文转换成B项目需要的报文,字段名称匹配手动通过set和get方法封装太浪费时间,干脆封装一个工具,只要读取properties配置文件 fieldA=filedB的方式 自动封装B项目需要的报文
代码如下
package com.appInterface.policyQ.utils;
import java.io.IOException;
import java.util.Properties;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class PolicyUtil {
private static final String confPath = "/conf/policy_service.properties";
public static String p03Note;
public static String p03PolicyDetail;
public static String p03PolicyList;
static{
try {
Properties prop = new Properties();
prop.load(PolicyUtil.class.getResourceAsStream(confPath));
p03Note = String.valueOf(prop.get("p03Note"));
p03PolicyDetail = String.valueOf(prop.get("p03PolicyDetail"));
p03PolicyList = String.valueOf(prop.get("p03PolicyList"));
} catch (IOException e) {
e.printStackTrace();
}
}
public static Properties getProp() throws IOException {
Properties prop = new Properties();
prop.load(PolicyUtil.class.getResourceAsStream(confPath));
return prop;
}
public static JSONObject transMap(JSONObject jsonObject, Properties prop) {
JSONObject newJSONObject = new JSONObject();
for (Object object : jsonObject.keySet()) {
String key = String.valueOf(object);
Object value = jsonObject.get(key);
String className = value.getClass().getName();
if(className.endsWith("JSONObject")) {
newJSONObject.put(prop.getProperty(key, key), transMap((JSONObject) value, prop));
}else if(className.endsWith("JSONArray")) {
newJSONObject.put(prop.getProperty(key, key), transArray((JSONArray) value, prop));
}else {
newJSONObject.put(prop.getProperty(key, key), value);
}
}
return newJSONObject;
}
public static JSONArray transArray(JSONArray jsonArray, Properties prop) {
JSONArray newJSONArray = new JSONArray();
for (Object object : jsonArray) {
String className = object.getClass().getName();
if(className.endsWith("JSONObject")) {
newJSONArray.add(transMap((JSONObject) object, prop));
}else if(className.endsWith("JSONArray")) {
newJSONArray.add(transArray((JSONArray) object, prop));
}else {
newJSONArray.add(object);
}
}
return newJSONArray;
}
}