前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring同时支持Json和Xml

Spring同时支持Json和Xml

作者头像
十毛
发布2019-12-12 16:23:48
1.2K0
发布2019-12-12 16:23:48
举报

项目中有时候需要同时支持XML和JSON格式的参数和返回值,如果是参数还比较容易处理,可以用String接收然后手动转换。 但是如果是返回值,则需要使用Spring框架自动转换,本文介绍如何在Spring框架实现Json和Xml

Jar包引用

  • pom.xml
代码语言:javascript
复制
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

Java代码

  • UserController.java
代码语言:javascript
复制
@RestController
@RequestMapping("user")
public class UserController {
    @GetMapping(path = "/{id}", produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE})
    public User getUser(@PathVariable Integer id) {
        return User.builder().id(id).name("name." +id).build();
    }
}
  • User.java
代码语言:javascript
复制
@Data
@Builder
public class User {
    private Integer id;
    private String name;
}

使用

  • JSON
代码语言:javascript
复制
curl -X GET http://localhost:8080/user/2 -H 'Accept: application/json'
代码语言:javascript
复制
{
    "id": 2,
    "name": "name.2"
}
  • XML
代码语言:javascript
复制
curl -X GET http://localhost:8080/user/2 -H 'Accept: application/xml'
代码语言:javascript
复制
<User>
    <id>2</id>
    <name>name.2</name>
</User>

常见问题

  • Http status 406:请求中的Accept头不合法,或者不被服务器接受,一遍修改为application/jsonapplication/xml
  • Http status 415, Unsupported Media Type Content type '' not supported:因为服务器配置consumers={配置的内容},但是请求头中没有Content type,一般设置为application/jsonapplication/xml

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Jar包引用
  • Java代码
  • 使用
  • 常见问题
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档