java:xml数据转json
pom.xml引入的jar
xml解析使用dom4j
<!--xml解析--><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.1.36</version></dependency>
1.创建xml转json工具类XmlToJsonUtil.java
package com.example.gxy.utils;import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.*;import java.util.List;/*** @ClassName XmlToJsonUtil* @Author gxy* @Desc xml转json*/
public class XmlToJsonUtil {private XmlToJsonUtil(){}/*** xml转json** @param xmlStr* @return* @throws DocumentException*/public static JSONObject xml2Json(String xmlStr) {Document doc = null;try {doc = DocumentHelper.parseText(xmlStr);} catch (DocumentException e) {e.printStackTrace();}JSONObject json = new JSONObject();dom4j2Json(doc.getRootElement(), json);return json;}/*** xml转json** @param element* @param json*/private static void dom4j2Json(Element element, JSONObject json) {// 如果是属性for (Object o : element.attributes()) {Attribute attr = (Attribute) o;if (StringUtils.isNotBlank(attr.getValue())) {json.put("@" + attr.getName(), attr.getValue());}}List<Element> chdEl = element.elements();if (chdEl.isEmpty() && StringUtils.isNotBlank(element.getText())) {// 如果没有子元素,只有一个值json.put(element.getName(), element.getText());}for (Element e : chdEl) {// 有子元素if (!e.elements().isEmpty()) {// 子元素也有子元素JSONObject chdjson = new JSONObject();dom4j2Json(e, chdjson);Object o = json.get(e.getName());if (o != null) {JSONArray jsona = null;if (o instanceof JSONObject) {// 如果此元素已存在,则转为jsonArrayJSONObject jsono = (JSONObject) o;json.remove(e.getName());jsona = new JSONArray();jsona.add(jsono);jsona.add(chdjson);}if (o instanceof JSONArray) {jsona = (JSONArray) o;jsona.add(chdjson);}json.put(e.getName(), jsona);} else {if (!chdjson.isEmpty()) {json.put(e.getName(), chdjson);}}} else {// 子元素没有子元素for (Object o : element.attributes()) {Attribute attr = (Attribute) o;if (StringUtils.isNotBlank(attr.getValue())) {json.put("@" + attr.getName(), attr.getValue());}}if (!e.getText().isEmpty()) {json.put(e.getName(), e.getText());}}}}
}
2.测试
xml文件
<?xml version="\"1.0\"" encoding="\"utf-8\""?>
<res><header><msgId>0000211</msgId><hdlSts>A</hdlSts><bdFlg>0</bdFlg></header><body><qrOvertimeFlag>Y</qrOvertimeFlag><orderTrans><tranSeq>66807478</tranSeq><merchantNo>104320553990088</merchantNo><orderNo>2439665</orderNo><custTranId></custTranId><tranCode>01</tranCode><tranTime>20190704134549</tranTime><tranAmount>0.01</tranAmount><tranStatus>1</tranStatus><unionPaySeq></unionPaySeq></orderTrans><orderTrans><tranSeq>66807491</tranSeq><merchantNo>104320553990088</merchantNo><orderNo>2439665</orderNo><custTranId>1043205539900882439665</custTranId><tranCode>06</tranCode><tranTime>20190704163313</tranTime><tranAmount>0.01</tranAmount><tranStatus>2</tranStatus><unionPaySeq></unionPaySeq></orderTrans><orderTrans><tranSeq>66807492</tranSeq><merchantNo>104320553990088</merchantNo><orderNo>2439665</orderNo><custTranId>1043205539900882439665</custTranId><tranCode>06</tranCode><tranTime>20190704163414</tranTime><tranAmount>0.01</tranAmount><tranStatus>2</tranStatus><unionPaySeq></unionPaySeq></orderTrans><orderTrans><tranSeq>66807495</tranSeq><merchantNo>104320553990088</merchantNo><orderNo>2439665</orderNo><custTranId>1043205539900882439665</custTranId><tranCode>06</tranCode><tranTime>20190705092338</tranTime><tranAmount>0.01</tranAmount><tranStatus>1</tranStatus><unionPaySeq></unionPaySeq></orderTrans></body>
</res>
main方法调用
public static void main(String[] args) {String returnObj ="<?xml version=\"1.0\" encoding=\"utf-8\" ?><res><header><msgId>0000211</msgId><hdlSts>A</hdlSts><bdFlg>0</bdFlg></header><body><qrOvertimeFlag>Y</qrOvertimeFlag><orderTrans><tranSeq>66807478</tranSeq><merchantNo>104320553990088</merchantNo><orderNo>2439665</orderNo><custTranId></custTranId><tranCode>01</tranCode><tranTime>20190704134549</tranTime><tranAmount>0.01</tranAmount><tranStatus>1</tranStatus><unionPaySeq></unionPaySeq></orderTrans><orderTrans><tranSeq>66807491</tranSeq><merchantNo>104320553990088</merchantNo><orderNo>2439665</orderNo><custTranId>1043205539900882439665</custTranId><tranCode>06</tranCode><tranTime>20190704163313</tranTime><tranAmount>0.01</tranAmount><tranStatus>2</tranStatus><unionPaySeq></unionPaySeq></orderTrans><orderTrans><tranSeq>66807492</tranSeq><merchantNo>104320553990088</merchantNo><orderNo>2439665</orderNo><custTranId>1043205539900882439665</custTranId><tranCode>06</tranCode><tranTime>20190704163414</tranTime><tranAmount>0.01</tranAmount><tranStatus>2</tranStatus><unionPaySeq></unionPaySeq></orderTrans><orderTrans><tranSeq>66807495</tranSeq><merchantNo>104320553990088</merchantNo><orderNo>2439665</orderNo><custTranId>1043205539900882439665</custTranId><tranCode>06</tranCode><tranTime>20190705092338</tranTime><tranAmount>0.01</tranAmount><tranStatus>1</tranStatus><unionPaySeq></unionPaySeq></orderTrans></body></res>";JSONObject jsonObject1 = XmlToJsonUtil.xml2Json(returnObj);System.out.println(jsonObject1);}
3.结果
{"header":{"msgId":"0000211","hdlSts":"A","bdFlg":"0"},"body":{"orderTrans":[{"tranSeq":"66807478","tranTime":"20190704134549","orderNo":"2439665","tranCode":"01","tranAmount":"0.01","merchantNo":"104320553990088","tranStatus":"1"},{"tranSeq":"66807491","tranTime":"20190704163313","orderNo":"2439665","custTranId":"1043205539900882439665","tranCode":"06","tranAmount":"0.01","merchantNo":"104320553990088","tranStatus":"2"},{"tranSeq":"66807492","tranTime":"20190704163414","orderNo":"2439665","custTranId":"1043205539900882439665","tranCode":"06","tranAmount":"0.01","merchantNo":"104320553990088","tranStatus":"2"},{"tranSeq":"66807495","tranTime":"20190705092338","orderNo":"2439665","custTranId":"1043205539900882439665","tranCode":"06","tranAmount":"0.01","merchantNo":"104320553990088","tranStatus":"1"}],"qrOvertimeFlag":"Y"}
}
复杂的xml也能转成功,很棒!!!
java:xml数据转json相关推荐
- java excel数据组装json成数据
java excel数据组装json成数据 客户提供excel数据,androdi app是离线的,所以考虑将数据组装成json数据放到assets目录下面. 首先需要去下载pio的包,文章末尾我会放 ...
- mysql xml字段转json格式_mysql将xml数据或者json数据转换为表格。
我需要将一个xml的数据或者json数据的字符串转化为一个mysql中的表格形式. json_extract函数只能处理单个json数据,无法处理json数组,ExtractValue函数取出来的数据 ...
- java xml数据解析_java xml解析,数据读取
xml格式<?xmlversion ="1.0"encoding="UTF-8"?> xml格式 32 寺坡镇管理员 202cb962ac59075 ...
- Java xml字符串转json
使用net.sf.json包将xml字符串转为JSONObject: 引入maven依赖: <dependency><groupId>net.sf.json-lib</g ...
- soap协议的xml数据转json
import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.jso ...
- [Java中将数据转JSON]
1.将List集合数据转成JSON JSONObject merchantJson = new JSONObject(); JSONArray merchantList= JSONArray.pars ...
- 【XML】Java对象数据的XML和JSON表示
XML与JSON 本文主要是基于之前的一份Java代码,根据合理数据(下面的链接中有),设计对应的XML格式和JSON格式的存储表示,并使用工具对其合法性加以验证. JavaCode 先看Java的代 ...
- Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- java中怎么使用json数据_JAVA中使用JSON进行数据传递
1.是不是只有xml传递数据的技术才是webservice? 可以这么理解.webservice是基于SOAP协议,SOAP协议是基于XML的文本协议.所以webservice可以简单理解为是基于XM ...
- java xml特殊字符转义_Java中将xml文件转化为json遇到特殊字符会报错!
前言: 我们在项目开发中,有时候调用别人提供的接口,接收到的数据是xml,这时候为了方便后续开发中的使用,需要解析xml并把数据转化成json,今天这篇文章就讲解下如何把xml转化成json,并在这个 ...
最新文章
- 通过anaconda2安装python2.7和安装pytorch
- 如何让ie 7 支持box-shadow
- 使用pytorch构建一个神经网络、损失函数、反向传播、更新网络参数
- react native引入第三方库
- 奇葩的UI引用LayoutInflater.from问题
- JAVA异常-面试题
- 活用这25种图表效果,你的数据可视化也能变得高级炫酷!
- linux命令 选项,Linux常用命令及选项
- 1、java 的安装及资料下载
- 淘宝APP购物车测试用例
- STM32利用DCMI对并口ADC高速数据采样
- 手披云雾开鸿蒙,赞美泰山的诗句
- 【转】伽利略卫星导航定位系统
- 非常全面的前端协作规范
- 【掘金 - 自动签到功能的实现】 - 让我们使用【ios/iphone 快捷指令自动化】实现一个社区每天自动签到小脚本
- 照片画质修复,模糊图片修复成高清画质
- 【DB】数据库面试笔试题库及详解(小麦苗DBA宝典出品)--数据库运维宝典
- 越狱苹果手机导出网易云音乐歌曲(以及缓存文件转换)
- 大数据的主要学习内容有哪些?
- Hold不住的老师 HNUST 1588
热门文章
- 小旋风万能蜘蛛池 小霸王蜘蛛池快速收录源码
- 关于Linux 系统程序(进程)自动升级的方法
- Ubuntu 开机自动运行命令或程序
- cp: cannot create regular file ‘/root/queues.conf’: No space left on devic
- 敏捷与CMMI的同与不同
- win10计算机管理看不见蓝牙,win10蓝牙不见了的解决方法
- JPEG文件编/解码详解
- 铺捉factoryreset的事件 ---转载
- LeetCode 105. 从前序与中序遍历序列构造二叉树(dfsdfs、边界判定情况、做一题送一题)
- 机房收费系统可行性研究报告