JAVA JSON转XML
主要jar包用到dom4j和gson。大致思路就是写一个方法遍历json的每一个key和value,碰到有深度的key重复调用本方法(也就是递归啦)
public class JsonToXml {private static final String STR_JSON = "{\"name\":\"yato233\",\"address\":{\"city\":\"beijing\",\"street\":\" longyu Road \",\"postcode\":100000},\"blog\":\"https://blog.csdn.net/baidu_38322198\"}";/*** 将json字符串转换成xml* * @param json* json字符串* @param parentElement* xml根节点* @throws Exception*/public static Element jsonToXml(String json, Element parentElement) throws Exception {JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();Element ee = toXml(jsonObject, parentElement, null);return ee;}/*** 将json字符串转换成xml* * @param jsonElement* 待解析json对象元素* @param parentElement* 上一层xml的dom对象* @param name* 父节点*/public static Element toXml(JsonElement jsonElement, Element parentElement, String name) {if (jsonElement instanceof JsonArray) {//是json数据,需继续解析JsonArray sonJsonArray = (JsonArray)jsonElement;for (int i = 0; i < sonJsonArray.size(); i++) {JsonElement arrayElement = sonJsonArray.get(i);toXml(arrayElement, parentElement, name);}}else if (jsonElement instanceof JsonObject) {//说明是一个json对象字符串,需要继续解析JsonObject sonJsonObject = (JsonObject) jsonElement;Element currentElement = null;if (name != null) {currentElement = parentElement.addElement(name);}Set<Entry<String, JsonElement>> set = sonJsonObject.entrySet();for (Entry<String, JsonElement> s : set) {toXml(s.getValue(), currentElement != null ? currentElement : parentElement, s.getKey());}} else {//说明是一个键值对的key,可以作为节点插入了addAttribute(parentElement, name, jsonElement.getAsString());}return parentElement;}/*** * @param element 父节点* @param name 子节点的名字* @param value 子节点的值*/public static void addAttribute(Element element, String name, String value) {//增加子节点,并为子节点赋值Element el = element.addElement(name);el.addText(value);}public static void main(String[] args) throws Exception {Document document = DocumentHelper.createDocument();Element root = document.addElement("stakeapply"); //默认根节点Element el = jsonToXml(STR_JSON, root);System.out.println(el.asXML());try {//生成xml文件String fileName = "test.xml";OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("UTF-8"); // 指定XML编码format.setExpandEmptyElements(true);//自动添加闭合标签document.setXMLEncoding("UTF-8");//指定文件路径,名字,格式XMLWriter writer = new XMLWriter(new FileOutputStream(new File("D:\\xml" + File.separator + fileName)), format);writer.write(document);writer.close();} catch (Exception e) {e.printStackTrace();}}
}
这就是一个小demo了,非常实用。楼主是http请求传入的json串,比较复杂,这里也把json和转化后的xml贴出来
```java
/*
json串
{"stakeapply": {"voltageLevel": "AC00062", "stakeList": {"stake": [{"stakeAssetNO": 45754745, "otherStakeTypeRemark": "xxx", "stationId": "547547547547"}, {"stakeAssetNO": 34325325322, "otherStakeTypeRemark": "xxx", "stationId": "52354645462"}]}, "otherStationTypeRemark": "xxx", "stationAddr": "哈哈", "custLists": {"custList": {"custId": "7547547547", "custPhone": 13666666666, "contactMode": 1}}, "principalList": {"principal": [{"principalName": 121212, "principalType": 1}, {"principalName": 12121233, "principalType": 1}]}}
}
*//*
转换后的xml
<?xml version="1.0" encoding="UTF-8"?><stakeapply><voltageLevel>AC00062</voltageLevel><stakeList><stake><stakeAssetNO>45754745</stakeAssetNO><otherStakeTypeRemark>xxx</otherStakeTypeRemark><stationId>547547547547</stationId></stake><stake><stakeAssetNO>34325325322</stakeAssetNO><otherStakeTypeRemark>xxx</otherStakeTypeRemark><stationId>52354645462</stationId></stake></stakeList><otherStationTypeRemark>xxx</otherStationTypeRemark><stationAddr>哈哈</stationAddr><custLists><custList><custId>7547547547</custId><custPhone>13666666666</custPhone><contactMode>1</contactMode></custList></custLists><principalList><principal><principalName>121212</principalName><principalType>1</principalType></principal><principal><principalName>12121233</principalName><principalType>1</principalType></principal></principalList>
</stakeapply>
*/
JAVA JSON转XML相关推荐
- java json转换xml格式_在Java中将JSON对象转换为XML格式?
JSON是一种轻量级的数据交换格式,并且JSON的格式类似于键值对.我们可以使用org.json.XML类将JSONObject转换为XML格式,这提供了将XML文本转换为JSONObject并将JS ...
- Java JSON、XML文件/字符串与Bean对象互转解析
前言 在做web或者其他项目中,JSON与XML格式的数据是大家经常会碰见的2种.在与各种平台做数据对接的时候,JSON与XML格式也是基本的数据传递格式,本文主要简单的介绍JSON/XML ...
- Java JSON 之 Xml 转 JSON 字符串
http://www.verejava.com/?id=16998704382152 下载依赖 jar 包 json.jar dom4j-1.6.1.jar jaxen-1.1-beta-6.jar ...
- java 原生 json 转 xml java json转xml 实现代码 读取本地json文件 转成 xml数据 用springboot 发布xml格式数据
结果xml截图 json数据 main启动 import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; ...
- java json与xml互转工具类
部分代码参考:https://blog.csdn.net/CDWLX/article/details/119038509 工具类 public class XmlMutualConversionJso ...
- java json xml app交互_Java 实体 xml 和 json 之间相互转换
一.相关注解与方法 1.注解(部分) @JsonProperty:把属性的名称序列化成另一个名称 @JsonFormat:日期格式转换(例如:@JsonFormat(timezone="GT ...
- java json转xml_关于JSON与XML的区别比较
现在互联网上,最流行的两大传输数据的标准就是json和XML了,关于谁是最好的,一直以来都是人们争论的话题,其实各有各的缺点和优点: 1.定义介绍 (1).XML定义 扩展标记语言 (Extensib ...
- json:JSONObject包的具体使用(JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包)...
1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包. 2.下载jar包 http:// ...
- java 序列化成xml文件_将Java对象序列化成JSON和XML格式
1.先定义一个Java对象Person: public class Person { String name; int age; int number; public String getName() ...
- Java XML转换为JSON XML解析 转换为JSON Java 实现JSON转换为XML json转xml
Java XML转换为JSON XML解析 转换为JSON Java 实现JSON转换为XML json转xml 一.转换代码 1.XML字符串转换为JSON /*** description: XM ...
最新文章
- SpringBoot+Mybatis+Swagger2环境搭建
- python 中的*(星号)和**(双星号)简介
- Windows 10 下的OpenVINO Pycharm+Anaconda开发环境配置
- Bone Collector【01背包】
- 怎么使用php连接mysql_如何使用PHP连接MySQL
- F2-网络模式相关命令
- 用户具有FullControl的权限,但是还是创建不了页面?
- XCode 遇到的问题
- 【ASUS】win7下安装USB3.0驱动蓝屏死机问题
- 基于Java、Jsp实现购物车的功能
- 通过U盘刻录镜像安装windows系统
- edge浏览器如何新建IE tab
- linux系统底层,干货|七点,用计算机底层知识教你安装Linux系统!
- Python之斐波那契
- 单向一对多和双向一对多
- 解析区块链游戏与GameFi的发展历程
- 马斯克为什么这么厉害?底层有一套强大的思维方式!
- antd table分页,关于react的antd表格分页的问题
- 物流行业SCM供应链协同系统全国仓库网络集中管理,实现全局掌控
- 四步骤关闭Windows10自动更新