這陣子一直在作一個三方支付,數據傳遞用的都是xml 可是在項目裏都是用的json,沒辦法 研究了下json和xml互轉的方法 這裏作下記錄。java
1. json轉xml 相對簡單些 用遞歸便可實現json
/** * Map or JSON 轉換成Xml * * fastJSON實現了Map<String,Object> 因此此處直接傳json 也能夠的 */ public static String mapToXMLTest2(Map map, StringBuffer sb) { Set set = map.keySet(); for (Iterator it = set.iterator(); it.hasNext(); ) { String key = (String) it.next(); Object value = map.get(key); if (null == value) value = ""; if (value.getClass().getName().equals("java.util.ArrayList")) { LinkedList list = (LinkedList) map.get(key); sb.append("<" + key + ">"); for (int i = 0; i < list.size(); i++) { HashMap hm = (HashMap) list.get(i); mapToXMLTest2(hm, sb); } sb.append("</" + key + ">"); } else { if (value instanceof HashMap) { sb.append("<" + key + ">"); mapToXMLTest2((HashMap) value, sb); sb.append("</" + key + ">"); } else { sb.append("<" + key + ">" + value + "</" + key + ">"); } } } return sb.toString(); }
2. xml字符串 轉JSON數組
xml轉JON 須要藉助 jackSon的 fastxml包來實現app
<!-- fasterxml --> <dependency> <groupId>com.fasterxml</groupId> <artifactId>jackson-xml-databind</artifactId> <version>0.6.2</version> </dependency>
/** * xml 轉json */ public static JSONObject convertXmlToJson(String xml) throws IOException { XmlMapper xmlMapper = new XmlMapper(); JSONObject param = xmlMapper.readValue(xml, JSONObject.class); return param; }
利用XmlMapper這個類, 簡單兩段代碼就能夠搞定 可是該方法有個缺點, 若是你的xml字符串轉換的內容裏 有數組的狀況下, 直接這樣轉是不行的。 這種狀況就要本身創建相應的實體類來作接收。 注:實體要有相應的getset方法, 並要保證和xml中的字段名一一對應。code