这阵子一直在作一个三方支付,数据传递用的都是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