当前位置: 代码网 > it编程>编程语言>Java > Java如何接收XML格式参数并转换为JSON

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

2025年03月27日 Java 我要评论
在 java 应用程序中,处理 xml 数据并将其转换为 json 格式是很常见的任务。以下是一个示例代码,展示如何使用 java 完成这一操作:前期准备1.确保你的项目中包含以下依赖:<dep

在 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的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com