主要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相关推荐

  1. java json转换xml格式_在Java中将JSON对象转换为XML格式?

    JSON是一种轻量级的数据交换格式,并且JSON的格式类似于键值对.我们可以使用org.json.XML类将JSONObject转换为XML格式,这提供了将XML文本转换为JSONObject并将JS ...

  2. Java JSON、XML文件/字符串与Bean对象互转解析

    前言      在做web或者其他项目中,JSON与XML格式的数据是大家经常会碰见的2种.在与各种平台做数据对接的时候,JSON与XML格式也是基本的数据传递格式,本文主要简单的介绍JSON/XML ...

  3. Java JSON 之 Xml 转 JSON 字符串

    http://www.verejava.com/?id=16998704382152 下载依赖 jar 包 json.jar dom4j-1.6.1.jar jaxen-1.1-beta-6.jar ...

  4. java 原生 json 转 xml java json转xml 实现代码 读取本地json文件 转成 xml数据 用springboot 发布xml格式数据

    结果xml截图 json数据 main启动 import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; ...

  5. java json与xml互转工具类

    部分代码参考:https://blog.csdn.net/CDWLX/article/details/119038509 工具类 public class XmlMutualConversionJso ...

  6. java json xml app交互_Java 实体 xml 和 json 之间相互转换

    一.相关注解与方法 1.注解(部分) @JsonProperty:把属性的名称序列化成另一个名称 @JsonFormat:日期格式转换(例如:@JsonFormat(timezone="GT ...

  7. java json转xml_关于JSON与XML的区别比较

    现在互联网上,最流行的两大传输数据的标准就是json和XML了,关于谁是最好的,一直以来都是人们争论的话题,其实各有各的缺点和优点: 1.定义介绍 (1).XML定义 扩展标记语言 (Extensib ...

  8. 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:// ...

  9. java 序列化成xml文件_将Java对象序列化成JSON和XML格式

    1.先定义一个Java对象Person: public class Person { String name; int age; int number; public String getName() ...

  10. 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 ...

最新文章

  1. SpringBoot+Mybatis+Swagger2环境搭建
  2. python 中的*(星号)和**(双星号)简介
  3. Windows 10 下的OpenVINO Pycharm+Anaconda开发环境配置
  4. Bone Collector【01背包】
  5. 怎么使用php连接mysql_如何使用PHP连接MySQL
  6. F2-网络模式相关命令
  7. 用户具有FullControl的权限,但是还是创建不了页面?
  8. XCode 遇到的问题
  9. 【ASUS】win7下安装USB3.0驱动蓝屏死机问题
  10. 基于Java、Jsp实现购物车的功能
  11. 通过U盘刻录镜像安装windows系统
  12. edge浏览器如何新建IE tab
  13. linux系统底层,干货|七点,用计算机底层知识教你安装Linux系统!
  14. Python之斐波那契
  15. 单向一对多和双向一对多
  16. 解析区块链游戏与GameFi的发展历程
  17. 马斯克为什么这么厉害?底层有一套强大的思维方式!
  18. antd table分页,关于react的antd表格分页的问题
  19. 物流行业SCM供应链协同系统全国仓库网络集中管理,实现全局掌控
  20. 四步骤关闭Windows10自动更新

热门文章

  1. C语言学习——初始C语言
  2. 离散数学:等价关系与集合覆盖
  3. python可以用于工业机器人编程与操作_工业机器人用什么语言编程?
  4. 计算机操作系统考试习题
  5. txt文件转为excel文件
  6. 中缀表达式——表达式树
  7. mysql带参数游标_mysql游标的使用
  8. 最简单的爬虫代码 python_python爬虫最简单代码
  9. TDH 更新Inceptor UDF步骤
  10. 搭建Hadoop开发环境(全过程)