Java如何接收XML格式参数并转换为JSON

 更新时间:2025年03月27日 10:50:51   作者:我真的不想做程序员  
在 Java 应用程序中,处理 XML 数据并将其转换为 JSON 格式是很常见的任务,这篇文章为大家整理了一下具体的实现方法,希望对大家有所帮助

在 Java 应用程序中,处理 XML 数据并将其转换为 JSON 格式是很常见的任务。以下是一个示例代码,展示如何使用 Java 完成这一操作:

前期准备

1.确保你的项目中包含以下依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.13.0</version>
</dependency>
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20210307</version>
</dependency>
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.1</version>
</dependency>

2.创建一个 Java 类来表示 XML 数据结构:

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;

@XmlRootElement(name = "data")
public class Data {
    private String name;
    private int age;
    private List<String> hobbies;

    // Getters and setters

    @XmlElement(name = "name")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @XmlElement(name = "age")
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @XmlElement(name = "hobbies")
    public List<String> getHobbies() {
        return hobbies;
    }

    public void setHobbies(List<String> hobbies) {
        this.hobbies = hobbies;
    }
}

接收 XML 参数

1.使用 JAXB 解析 XML 数据:

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;

public class XMLParser {
    public static Data parseXML(String xml) throws Exception {
        JAXBContext context = JAXBContext.newInstance(Data.class);
        Unmarshaller unmarshaller = context.createUnmarshaller();
        StringReader reader = new StringReader(xml);
        Data data = (Data) unmarshaller.unmarshal(reader);
        return data;
    }
}

2.在你的控制器中接收 XML 参数:

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DataController {
    @PostMapping("/receive-xml")
    public ResponseEntity<String> receiveXML(@RequestBody String xml) {
        try {
            Data data = XMLParser.parseXML(xml);
            String json = JSONConverter.convertToJSON(data);
            return new ResponseEntity<>(json, HttpStatus.OK);
        } catch (Exception e) {
            return new ResponseEntity<>("Error processing XML", HttpStatus.BAD_REQUEST);
        }
    }
}

将 XML 转换为 JSON

使用 Jackson 将 Java 对象转换为 JSON 字符串:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.json.JSONObject;

public class JSONConverter {
    public static String convertToJSON(Data data) throws Exception {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
        return objectMapper.writeValueAsString(data);
    }
}

测试代码

假设你使用的是 Spring Boot 项目,可以通过以下方式测试:

启动你的 Spring Boot 应用程序。

使用工具如 Postman 或 curl 发送一个 POST 请求到 /receive-xml,内容类型为 application/xml,并附带以下 XML 数据:

<data>
    <name>John</name>
    <age>30</age>
    <hobbies>
        <hobby>Reading</hobby>
        <hobby>Traveling</hobby>
        <hobby>Cooking</hobby>
    </hobbies>
</data>

你应该会收到以下 JSON 响应:

{
  "name" : "John",
  "age" : 30,
  "hobbies" : [ "Reading", "Traveling", "Cooking" ]
}

总结

通过以上代码,我们展示了如何在 Java 中接收 XML 格式的参数,并将其转换为 JSON 格式。这个过程包括以下步骤:

  • 使用 JAXB 解析 XML 数据并绑定到 Java 对象。
  • 使用 Jackson 将 Java 对象转换为 JSON 字符串。
  • 通过 REST API 接收 XML 请求并返回 JSON 响应。

以上就是Java如何接收XML格式参数并转换为JSON的详细内容,更多关于Java接收XML并转为JSON的资料请关注脚本之家其它相关文章!

相关文章

  • 缓存工具类ACache使用方法详解

    缓存工具类ACache使用方法详解

    这篇文章主要为大家详细介绍了缓存工具类ACache的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Java中List排序的3种常见方法总结

    Java中List排序的3种常见方法总结

    在Java编程中List对象的排序是一个常见的需求,List接口提供了多种排序方法,这篇文章主要给大家介绍了关于Java中List排序的3种常见方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • java中归并排序和Master公式详解

    java中归并排序和Master公式详解

    大家好,本篇文章主要讲的是java中归并排序和Master公式详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • java 取交集方法retainAll的实现

    java 取交集方法retainAll的实现

    这篇文章主要介绍了java 取交集方法retainAll的实现操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • JAVA 聚焦 OutOfMemoryError 异常问题记录

    JAVA 聚焦 OutOfMemoryError 异常问题记录

    在 Java 开发中,内存溢出异常是影响程序稳定性的关键问题,了解其原理和应对方法,对开发者至关重要,这篇文章主要介绍了JAVA聚焦 OutOfMemoryError 异常,需要的朋友可以参考下
    2025-04-04
  • ThreadLocal使用案例_动力节点Java学院整理

    ThreadLocal使用案例_动力节点Java学院整理

    这篇文章主要介绍了ThreadLocal使用案例分析,需要的朋友可以参考下
    2017-08-08
  • Java正则匹配中文的方法实例分析

    Java正则匹配中文的方法实例分析

    这篇文章主要介绍了Java正则匹配中文的方法,结合实例形式分析了Java针对中文、标点及引号等匹配操作相关技巧,需要的朋友可以参考下
    2017-03-03
  • 详解Java常用工具类—泛型

    详解Java常用工具类—泛型

    这篇文章主要介绍了Java常用工具类—泛型,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 详解Java中的时间处理与时间标准

    详解Java中的时间处理与时间标准

    这篇文章主要为大家详细介绍了三个时间标准GMT,CST,UTC的规定,以及Java进行时间处理的相关知识,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-09-09
  • 2018年java技术面试题整理

    2018年java技术面试题整理

    小编为大家整理了2018年最新的关于java技术相关的面试题,以及给出了最简简答方式,学习下吧。
    2018-02-02

最新评论