SpringBoot Xml转Json对象

软件测试视界 2024-03-10 ⋅ 32 阅读

介绍

在开发过程中,我们经常需要将XML数据转换为JSON对象。Spring Boot通过使用Jackson库,可以很方便地实现这种转换。

依赖

首先,我们需要在pom.xml文件中添加Jackson和Spring Boot相关的依赖:

<dependencies>
    <!-- Spring Boot -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <!-- Jackson -->
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
    </dependency>
</dependencies>

转换过程

接下来,我们需要编写一个工具类来进行XML到JSON对象的转换:

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;

import java.io.IOException;

public class XmlToJsonConverter {
    private static final ObjectMapper objectMapper = createObjectMapper();

    private static ObjectMapper createObjectMapper() {
        ObjectMapper objectMapper = new XmlMapper();
        objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
        return objectMapper;
    }

    public static JsonNode convert(String xml) throws IOException {
        return objectMapper.readTree(xml.getBytes());
    }

    public static String convertToJsonString(String xml) throws JsonProcessingException {
        JsonNode jsonNode = convert(xml);
        return objectMapper.writeValueAsString(jsonNode);
    }
}

在上面的代码中,我们使用XmlMapper来读取XML字符串,并将其转换为JsonNode对象。然后,我们使用ObjectMapperJsonNode对象转换为JSON字符串。

示例

假设我们有以下的XML字符串:

<book>
    <title>Spring Boot in Action</title>
    <author>Craig Walls</author>
    <publisher>Manning Publications</publisher>
    <publicationYear>2020</publicationYear>
</book>

我们可以使用以下代码将其转换为JSON字符串:

String xml = "<book>\n" +
             "    <title>Spring Boot in Action</title>\n" +
             "    <author>Craig Walls</author>\n" +
             "    <publisher>Manning Publications</publisher>\n" +
             "    <publicationYear>2020</publicationYear>\n" +
             "</book>";

try {
    String json = XmlToJsonConverter.convertToJsonString(xml);
    System.out.println(json);
} catch (JsonProcessingException e) {
    e.printStackTrace();
}

最终输出的JSON字符串为:

{
  "title" : "Spring Boot in Action",
  "author" : "Craig Walls",
  "publisher" : "Manning Publications",
  "publicationYear" : "2020"
}

总结

通过Spring Boot和Jackson库的支持,我们可以轻松地将XML数据转换为JSON对象。这种转换在很多场景下非常有用,例如在RESTful API开发中,将请求参数从XML转换为JSON,或者将XML响应转换为JSON格式。


全部评论: 0

    我有话说: