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

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

前期准备

  1. 确保你的项目中包含以下依赖:
xml 复制代码
<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>
  1. 创建一个 Java 类来表示 XML 数据结构:
java 复制代码
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 数据:
java 复制代码
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;
    }
}
  1. 在你的控制器中接收 XML 参数:
java 复制代码
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

  1. 使用 Jackson 将 Java 对象转换为 JSON 字符串:
java 复制代码
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 项目,可以通过以下方式测试:

  1. 启动你的 Spring Boot 应用程序。
  2. 使用工具如 Postman 或 curl 发送一个 POST 请求到 /receive-xml,内容类型为 application/xml,并附带以下 XML 数据:
xml 复制代码
<data>
    <name>John</name>
    <age>30</age>
    <hobbies>
        <hobby>Reading</hobby>
        <hobby>Traveling</hobby>
        <hobby>Cooking</hobby>
    </hobbies>
</data>
  1. 你应该会收到以下 JSON 响应:
json 复制代码
{
  "name" : "John",
  "age" : 30,
  "hobbies" : [ "Reading", "Traveling", "Cooking" ]
}

总结

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

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

希望这篇文章对你有所帮助,如果你有任何问题,请随时提问!

相关推荐
laimaxgg几秒前
Qt常用控件之多行输入框QTextEdit
开发语言·c++·qt·qt5·qt6.3
AI 菌4 分钟前
【DeepSeek系列】05 DeepSeek核心算法改进点总结
算法
楠枬9 分钟前
网页五子棋——项目测试
java·功能测试·spring
数据知道12 分钟前
python中httpx库的详细使用及案例
开发语言·爬虫·python·httpx
go546315846514 分钟前
基于Matlab实现汽车远近光灯识别的详细步骤及代码示例
开发语言·matlab·汽车
jingwang-cs18 分钟前
钉钉合同审批对接腾讯电子签,实现合同全流程自动化管理
运维·人工智能·后端·自动化·钉钉
Kent_J_Truman28 分钟前
【删边问题——Tarjan求割边】
算法
武昌库里写JAVA1 小时前
《AI 大模型 ChatGPT 的传奇》
数据结构·vue.js·spring boot·算法·课程设计
软件黑马王子1 小时前
C#初级教程(6)——函数:从基础到实践
开发语言·c#
患得患失9491 小时前
【前端】【面试】【树】JavaScript 树形结构与列表结构的灵活转换:`listToTree` 与 `treeToList` 函数详解
开发语言·前端·javascript·tree·listtotree·treetolist