You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot+Jersey+Swagger场景下API响应JSON属性自定义问题

解决Spring Boot + Jersey + Swagger的JSON属性名映射问题

不用额外写字典映射服务!你遇到的问题核心在于:@ApiModelProperty只负责Swagger文档的模型展示,完全不影响JSON的序列化/反序列化逻辑——这个工作是由Jersey默认集成的Jackson来处理的。

直接用Jackson的@JsonProperty注解就能同时搞定GET响应的序列化和PUT请求的反序列化,步骤如下:

1. 在实体类字段上添加@JsonProperty

这个注解会告诉Jackson:序列化时把Java字段myText映射为JSON键"My Own Text";反序列化时把JSON键"My Own Text"映射回Java字段myText。同时配合@ApiModelProperty保持Swagger文档的一致性:

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;

public class MyEntity {
    // 同时控制JSON映射和Swagger文档展示
    @JsonProperty("My Own Text")
    @ApiModelProperty(name = "My Own Text", value = "操作结果描述")
    private String myText;

    // 标准的getter/setter
    public String getMyText() {
        return myText;
    }

    public void setMyText(String myText) {
        this.myText = myText;
    }
}

2. 验证效果

  • GET接口:返回MyEntity实例时,JSON响应会自动变成{"My Own Text": "success"}
  • PUT接口:前端传入{"My Own Text": "new content"}时,Jersey会通过Jackson自动将值映射到实体类的myText字段

为什么不需要自定义映射服务?

Jackson是Jersey默认的JSON处理组件,@JsonProperty是它的标准注解,已经原生支持双向的属性名映射,比自己写字典映射更稳定、更简洁,还能避免重复造轮子。

内容的提问来源于stack exchange,提问作者Derek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:58:01