java xml 转json
Posted oY-CCTR
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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); } } } }
以上是关于java xml 转json的主要内容,如果未能解决你的问题,请参考以下文章