您的位置:首页 > Web前端 > JavaScript

JSON转XML及反射调用对应的方法

2016-05-09 10:31 573 查看
import java.lang.reflect.Method;

import java.util.ArrayList;

import java.util.List;

import java.util.Map.Entry;

import java.util.Set;

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

import com.kakasure.api.dao.model.BankCard;

import com.kakasure.api.dao.model.BankData;

public class Bank2BMsgUtils extends Bank2BBaseXml {

/**

* 根据JSON 获取Xml

*

* @param jsonParam

* @return

* @throws Exception

*/

public static String getXml(String jsonParam) throws Exception {

String xmlStr = "";

if (jsonParam == null) {

return xmlStr;

} else {

JSONObject jsonObject = JSONObject.parseObject(jsonParam);

BankData data = new BankData();

parseJson(data, jsonObject);

String trCode = data.getTrCode();

Method method = Bank2BBaseXml.class.getMethod("getXML_" + trCode, BankData.class);

xmlStr = (String) method.invoke(null, data);

}

return xmlStr;

}

/**

* 解析JSON

*

* @param obj

* @param jsonObject

* @throws Exception

*/

private static <T extends Object> void parseJson(T obj, JSONObject jsonObject) throws Exception {

if (jsonObject == null) {

return;

}

Set<Entry<String, Object>> jsonSet = jsonObject.entrySet();

for (Entry<String, Object> entry : jsonSet) {

if (entry.getValue() instanceof JSONArray) {

JSONArray array = (JSONArray) entry.getValue();

List<BankCard> list = new ArrayList<>();

BankCard bankCard = null;

int size = array.size();

UnipayProperties config = UnipayProperties.getInstance();

int maxNums = config.getInt("detailNums");

if (size > maxNums) {

throw new IllegalArgumentException("BankCard 明细数据只允许"+maxNums+"条,请核实!");

}

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

bankCard = new BankCard();

parseJson(bankCard, array.getJSONObject(i));

list.add(bankCard);

}

setObjValue(obj, "bankCards", list);

} else {

setObjValue(obj, entry.getKey(), entry.getValue());

}

}

}

/**

* 根据属性名称给对象赋值

*

* @param bankData

* @param paramName

* @param args

*/

@SuppressWarnings({ "unchecked", "rawtypes" })

private static <T> void setObjValue(T obj, String paramName, Object args) throws Exception {

Class objClass = obj.getClass();

Method method = null;

if (args instanceof String) {

method = objClass.getMethod(getSetMethodName(paramName), String.class);

} else if (args instanceof List) {

method = objClass.getMethod(getSetMethodName(paramName), List.class);

}

method.invoke(obj, args);

}

/**

* 根据属性名称获取SET方法名称

*

* @param paramName

* @return

*/

private static String getSetMethodName(String paramName) {

return "set" + paramName.substring(0, 1).toUpperCase() + paramName.substring(1);

}

public static void main(String[] args) throws Exception {

// String jsonStr = "[\"name\":\"jack\",\"Student\":{\"]";

String jsonStr = "{\"payAcname\":\"jack\",\"reqNo\":\"18\",\"detail\":[{\"amt\":\"001\",\"busiNo\":\"c4\"}]}";

JSONObject jsonObject = JSONObject.parseObject(jsonStr);

BankData data = new BankData();

parseJson(data, jsonObject);

System.out.println(data.getPayAcname() + ",List = " + data.getBankCards().get(0).getBusiNo());

// System.out.println(jsonObject.get("student"));

}

}

model :

public class BankCard {

private String busiNo;

private String cardFlag;

private String cardNo;

private String acname;

private String amt;

public String getBusiNo() {

return busiNo;

}

public void setBusiNo(String busiNo) {

this.busiNo = busiNo;

}

public String getCardFlag() {

return cardFlag;

}

public void setCardFlag(String cardFlag) {

this.cardFlag = cardFlag;

}

public String getCardNo() {

return cardNo;

}

public void setCardNo(String cardNo) {

this.cardNo = cardNo;

}

public String getAcname() {

return acname;

}

public void setAcname(String acname) {

this.acname = acname;

}

public String getAmt() {

return amt;

}

public void setAmt(String amt) {

this.amt = amt;

}

}

import java.util.List;

public class BankData {

private String trCode;

private String corpNo;

private String userNo;

private String reqNo;

private String trAcdt;

private String trTime;

private String atomTrCount;

private String channel;

private String reserved;

private String rcvBankName;

private String payAcno;

private String payAcname;

private String rcvAcno;

private String rcvAcname;

private String curCode;

//private String amt;

private String certNo;

private String summary;

private String bankFlag;

private String areaFlag;

private String sumAmt;

private String payMonth;

private String acno;

private String oglSerialNo;

private String bgnDate;

private String endDate;

private String agreeBusiNo;

private List<BankCard> bankCards;

public String getSumAmt() {

return sumAmt;

}

public void setSumAmt(String sumAmt) {

this.sumAmt = sumAmt;

}

public String getPayMonth() {

return payMonth;

}

public void setPayMonth(String payMonth) {

this.payMonth = payMonth;

}

public String getTrCode() {

return trCode;

}

public void setTrCode(String trCode) {

this.trCode = trCode;

}

public String getCorpNo() {

return corpNo;

}

public void setCorpNo(String corpNo) {

this.corpNo = corpNo;

}

public String getUserNo() {

return userNo;

}

public void setUserNo(String userNo) {

this.userNo = userNo;

}

public String getReqNo() {

return reqNo;

}

public void setReqNo(String reqNo) {

this.reqNo = reqNo;

}

public String getTrAcdt() {

return trAcdt;

}

public void setTrAcdt(String trAcdt) {

this.trAcdt = trAcdt;

}

public String getTrTime() {

return trTime;

}

public void setTrTime(String trTime) {

this.trTime = trTime;

}

public String getAtomTrCount() {

return atomTrCount;

}

public void setAtomTrCount(String atomTrCount) {

this.atomTrCount = atomTrCount;

}

public String getChannel() {

return channel;

}

public void setChannel(String channel) {

this.channel = channel;

}

public String getReserved() {

return reserved;

}

public void setReserved(String reserved) {

this.reserved = reserved;

}

public String getRcvBankName() {

return rcvBankName;

}

public void setRcvBankName(String rcvBankName) {

this.rcvBankName = rcvBankName;

}

public String getPayAcno() {

return payAcno;

}

public void setPayAcno(String payAcno) {

this.payAcno = payAcno;

}

public String getPayAcname() {

return payAcname;

}

public void setPayAcname(String payAcname) {

this.payAcname = payAcname;

}

public String getRcvAcno() {

return rcvAcno;

}

public void setRcvAcno(String rcvAcno) {

this.rcvAcno = rcvAcno;

}

public String getRcvAcname() {

return rcvAcname;

}

public void setRcvAcname(String rcvAcname) {

this.rcvAcname = rcvAcname;

}

public String getCurCode() {

return curCode;

}

public void setCurCode(String curCode) {

this.curCode = curCode;

}

public String getCertNo() {

return certNo;

}

public void setCertNo(String certNo) {

this.certNo = certNo;

}

public String getSummary() {

return summary;

}

public void setSummary(String summary) {

this.summary = summary;

}

public String getBankFlag() {

return bankFlag;

}

public void setBankFlag(String bankFlag) {

this.bankFlag = bankFlag;

}

public String getAreaFlag() {

return areaFlag;

}

public void setAreaFlag(String areaFlag) {

this.areaFlag = areaFlag;

}

public String getAcno() {

return acno;

}

public void setAcno(String acno) {

this.acno = acno;

}

public String getOglSerialNo() {

return oglSerialNo;

}

public void setOglSerialNo(String oglSerialNo) {

this.oglSerialNo = oglSerialNo;

}

public String getEndDate() {

return endDate;

}

public void setEndDate(String endDate) {

this.endDate = endDate;

}

public String getBgnDate() {

return bgnDate;

}

public void setBgnDate(String bgnDate) {

this.bgnDate = bgnDate;

}

public String getAgreeBusiNo() {

return agreeBusiNo;

}

public void setAgreeBusiNo(String agreeBusiNo) {

this.agreeBusiNo = agreeBusiNo;

}

public List<BankCard> getBankCards() {

return bankCards;

}

public void setBankCards(List<BankCard> bankCards) {

this.bankCards = bankCards;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: