JAVA工具方法 —— JSON转XML 和 XML转JSON

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

这阵子一直在做一个三方支付,数据传递用的都是xml 但是在项目里都是用的json,没办法 研究了下json和xml互转的方法 这里做下记录。

 1. json转xml 相对简单些 用递归即可实现

    /**
     * Map or JSON 转换成Xml
     *
     * fastJSON实现了Map 所以此处直接传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("");

            } else {
                if (value instanceof HashMap) {
                    sb.append("<" + key + ">");
                    mapToXMLTest2((HashMap) value, sb);
                    sb.append("");
                } else {
                    sb.append("<" + key + ">" + value + "");
                }
            }
        }

        return sb.toString();
    }

2. xml字符串 转JSON

    xml转JON 需要借助 jackSon的 fastxml包来实现

        
        
            com.fasterxml
            jackson-xml-databind
            0.6.2
        
    /**
     * 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中的字段名一一对应。

转载于:https://my.oschina.net/danjuan/blog/1831113

你可能感兴趣的:(JAVA工具方法 —— JSON转XML 和 XML转JSON)