导读:本期聚焦于小伙伴创作的《如何将JSON数据转换为XML格式 Java实现JSON转XML》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何将JSON数据转换为XML格式 Java实现JSON转XML》有用,将其分享出去将是对创作者最好的鼓励。

在Java开发中,将JSON数据转换为XML格式是常见需求,比如需要对接仅支持XML格式的旧系统接口,或者需要将JSON数据持久化存储为符合XML规范的文档。实现这个转换功能不需要手动解析JSON再拼接XML字符串,借助成熟的第三方库可以高效完成。

如何将JSON数据转换为XML格式 Java实现JSON转XML

方案一:使用json_lib库实现转换

json_lib是较早出现的JSON处理库,内置了JSON转XML的直接方法,使用起来比较简单,不过需要注意该库的依赖配置。

环境依赖

需要在项目中引入json_lib的相关依赖,如果是Maven项目,在pom.xml中添加如下配置:

<dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.4</version>
    <classifier>jdk15</classifier>
</dependency>

核心实现代码

json_lib提供了XMLSerializer类,可以直接将JSON对象序列化为XML字符串,示例代码如下:

import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;

public class JsonToXmlByJsonLib {
    public static void main(String[] args) {
        // 待转换的JSON字符串
        String jsonStr = "{"user":{"name":"张三","age":25,"hobby":["篮球","阅读"]}}";
        // 将字符串解析为JSON对象
        JSONObject jsonObject = JSONObject.fromObject(jsonStr);
        // 创建XML序列化器
        XMLSerializer xmlSerializer = new XMLSerializer();
        // 设置XML的根节点名称,默认是o
        xmlSerializer.setRootName("data");
        // 执行转换
        String xmlResult = xmlSerializer.write(jsonObject);
        System.out.println("转换后的XML结果:");
        System.out.println(xmlResult);
    }
}

上述代码运行后输出的XML内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<data>
  <user>
    <name>张三</name>
    <age>25</age>
    <hobby>篮球</hobby>
    <hobby>阅读</hobby>
  </user>
</data>

注意事项

  • json_lib对复杂JSON结构的支持有限,比如嵌套层级过深或者包含特殊字符时可能出现转换异常
  • 该库已经停止更新,新项目不建议优先选择
  • 如果JSON中包含数组,转换后数组的每个元素会成为同名的XML子节点

方案二:使用org_json库实现转换

org_json是更轻量、维护更活跃的JSON处理库,很多主流项目都在使用,它同样提供了JSON转XML的能力,兼容性更好。

环境依赖

Maven项目添加如下依赖:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20230227</version>
</dependency>

核心实现代码

org_json中通过XML类的toString方法实现转换,示例代码如下:

import org.json.JSONObject;
import org.json.XML;

public class JsonToXmlByOrgJson {
    public static void main(String[] args) {
        // 待转换的JSON字符串
        String jsonStr = "{"user":{"name":"李四","age":30,"address":{"city":"北京","street":"朝阳路"}}}";
        // 解析为JSON对象
        JSONObject jsonObject = new JSONObject(jsonStr);
        // 执行转换,第二个参数是根节点名称
        String xmlResult = XML.toString(jsonObject, "result");
        System.out.println("转换后的XML结果:");
        System.out.println(xmlResult);
    }
}

上述代码运行后输出的XML内容如下:

<result>
  <user>
    <name>李四</name>
    <age>30</age>
    <address>
      <city>北京</city>
      <street>朝阳路</street>
    </address>
  </user>
</result>

注意事项

  • org_json的转换逻辑更贴合JSON和XML的规范,对嵌套对象、特殊字符的处理更稳健
  • 如果JSON中存在JSONArray类型的数组,转换后需要通过自定义逻辑处理数组节点的命名,默认会按照索引生成子节点
  • 该库支持自定义XML的缩进、编码等属性,需要额外编写处理逻辑

两种方案对比

我们可以通过如下表格对比两种实现的差异,方便选择适合自己项目的方案:

对比项json_lib方案org_json方案
依赖体积较大,需要依赖多个辅助包轻量,仅一个核心包
维护状态停止更新,存在兼容风险持续更新,兼容性好
复杂结构支持一般,易出现异常较好,处理更规范
使用难度低,内置序列化器低,API简洁

自定义转换逻辑说明

如果上述两种库的默认转换结果不符合需求,比如需要自定义XML节点的命名规则、处理特殊字符的转义,也可以手动实现转换逻辑。核心思路是先解析JSON的所有键值对,再按照XML的语法规则拼接字符串,注意需要对<>&等特殊字符进行转义,避免生成不符合规范的XML。

手动实现的基础示例代码如下:

import org.json.JSONObject;

public class CustomJsonToXml {
    public static void main(String[] args) {
        String jsonStr = "{"id":1,"content":"测试<内容>"}";
        JSONObject jsonObject = new JSONObject(jsonStr);
        StringBuilder xmlBuilder = new StringBuilder();
        xmlBuilder.append("<?xml version="1.0" encoding="UTF-8"?>");
        xmlBuilder.append("<root>");
        // 遍历JSON的所有键
        for (String key : jsonObject.keySet()) {
            Object value = jsonObject.get(key);
            // 转义特殊字符
            String safeValue = value.toString().replace("<", "<").replace(">", ">").replace("&", "&");
            xmlBuilder.append("<").append(key).append(">").append(safeValue).append("</").append(key).append(">");
        }
        xmlBuilder.append("</root>");
        System.out.println("自定义转换结果:");
        System.out.println(xmlBuilder.toString());
    }
}

实际开发中优先选择成熟的第三方库实现JSON转XML,减少重复开发和潜在的逻辑漏洞,只有在库无法满足特殊转换需求时再考虑手动实现。

JSON转XMLJavajson_liborg_jsonXML生成修改时间:2026-07-17 14:12:44

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。