xmlをjsonに変換し、jsonを解析
12445 ワード
冒頭:一般会社のプロジェクトでは、xmlメッセージを返すことが多く、xmlをjsonに解析する方法があります.ここでは、sax解析方式を採用しています.
一.maven依存
二.コードは次のとおりです.
三、結果は以下の通り
{ "MoBaoAccount": { "MerchID": ["zhangbingfa"], "UserID": ["zhangbingfa"], "Commission": ["0.5"], "OrderNo": ["M2015052198456"], "TradeAmt": ["5000.00"], "CustParam": ["321"], "tradeType": ["0"] }
}
一.maven依存
org.jdom
jdom2
2.0.6
com.alibaba
fastjson
1.2.46
二.コードは次のとおりです.
public class TestXml2Json {
public static void main(String[] args) throws JDOMException, IOException {
String xml="\"1.0\" encoding=\"utf-8\" ?>" +
"\"UserMobilePay\" PlatformID=\"b2ctest\">" +
"M20150521084825 " +
"5000.00 " +
"0.5 " +
"zhangbingfa " +
"zhangbingfa " +
"0 " +
"123 " +
" ";
// xml
JSONObject json=xml2Json(xml.getBytes());
// json
JSONObject moBaoAccount = (JSONObject) json.get("MoBaoAccount");
List commission = (List) moBaoAccount.get("Commission");
Order order = new Order();
//
order.setCommission((String) commission.get(0));
System.out.println(order.getOrderNo()+">>>>>>>>>"+order.getCommission()+">>>>>>>"+order.getTradeAmt());
System.out.println(json.toJSONString());
}
public static JSONObject xml2Json(byte[] xml) throws JDOMException, IOException {
JSONObject jsonObject = new JSONObject();
//
InputStream is = new ByteArrayInputStream(xml);
// sax ,
SAXBuilder saxBuilder = new SAXBuilder();
// xml
Document document = saxBuilder.build(is);
// , xml
Element rootElement = document.getRootElement();
//
jsonObject.put(rootElement.getName(),iterateElement(rootElement));
return jsonObject;
}
private static JSONObject iterateElement(Element rootElement) {
//
List note = rootElement.getChildren();
Element et;
JSONObject jsonObject = new JSONObject();
List list;
for(int i=0;i; i++){
list = new LinkedList();
et = (Element) note.get(i);
// > if(et.getTextTrim().equals("")){
if(et.getChildren().size() == 0) continue;
// ,
if(jsonObject.containsKey(et.getName())){
list = (List)jsonObject.get(et.getName());
}
list.add(iterateElement(et));
jsonObject.put(et.getName(),list);
}else{
if(jsonObject.containsKey(et.getName())){
list = (List)jsonObject.get(et.getName());
}
// , 1, 1
list.add(et.getTextTrim());
jsonObject.put(et.getName(),list);
}
}
return jsonObject;
}
}
class Order{
private String OrderNo;
private String TradeAmt;
private String Commission;
public String getOrderNo() {
return OrderNo;
}
public void setOrderNo(String orderNo) {
OrderNo = orderNo;
}
public String getTradeAmt() {
return TradeAmt;
}
public void setTradeAmt(String tradeAmt) {
TradeAmt = tradeAmt;
}
public String getCommission() {
return Commission;
}
public void setCommission(String commission) {
Commission = commission;
}
}
三、結果は以下の通り
{ "MoBaoAccount": { "MerchID": ["zhangbingfa"], "UserID": ["zhangbingfa"], "Commission": ["0.5"], "OrderNo": ["M2015052198456"], "TradeAmt": ["5000.00"], "CustParam": ["321"], "tradeType": ["0"] }
}