网上找了下. 一开始看到的都是引用的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); } } } }
原文地址:https://www.cnblogs.com/oY-CCTR/p/12101342.html
时间: 2024-10-12 12:26:11