java xml 转json

网上找了下. 一开始看到的都是引用的 json-lib,JSON-JAVA这种的包. 我也搞不懂都还依赖些什么,反正我的一转就是报错. 找了一圈也是懵,搞不懂. 
最好想得还是找个人家写好的方法用算了. 看到一个写着 高效xml转json 的方法 . 无脑抄了. 结果在使用的过程中发现.转出来的了xml会少东西.然后仔细看了下实现代码....
心里只有一个想法. 哪来的勇气叫高效的. . .
于是自己有写了个. 放出来. 希望后面有用的人能省点事吧.
为了避免打脸我可不敢说什么高效. 什么完美的.
如发现问题,请多批评指教.
-------------------------------------------
下面正文
使用到的包
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>


<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.32</version>
</dependency>

直接上代码
 
public static void xmlToJSON(Element element, JSONObject json) throws JSONException {
        
        var elementAttributes = element.attributes();
        var elementText = element.getText();
        List<Element> childElements = element.elements();

        for (Object Attribute : elementAttributes) {
            Attribute attr = (Attribute) Attribute;
            if (!isEmpty(attr.getValue())) {
                json.put("@" + attr.getName(), attr.getValue());
            }
        }

        if (!isEmpty(elementText)) {
            if (childElements.isEmpty()) {
                json.put(element.getName(), element.getText());
            } else {
                json.put("#text", element.getText());
            }
        }
        for (Element childElement: childElements){
            JSONObject childJSON = new JSONObject();
            xmlToJSON(childElement, childJSON);
            Object childObject = json.get(childElement.getName());
            if (childObject != null) {
                JSONArray jsona = null;
                if (childObject instanceof JSONObject) {//如果此元素已存在,则转为jsonArray
                    JSONObject jsono = (JSONObject) childObject;
                    json.remove(childElement.getName());
                    jsona = new JSONArray();
                    jsona.add(jsono);
                    jsona.add(childJSON);
                }
                if (childObject instanceof JSONArray) {
                    jsona = (JSONArray) childObject;
                    jsona.add(childJSON);
                }
                json.put(childElement.getName(), jsona);
            } else {
                if (!childJSON.isEmpty()) {
                    json.put(childElement.getName(), childJSON);
                }
            }
        }

    }
 



 

猜你喜欢

转载自www.cnblogs.com/oY-CCTR/p/12101342.html
今日推荐