@JsonProperty 序列化失效问题记录

问题背景:

有一个保存和修改的需求
接口地址都是 /apps/info,请求方式分别为POST 和 GET
定义了一个参数类

@Data
@Accessors(chain = true)
public class AppInfoReq {

    @JsonProperty("is_disable")
    private Boolean disabled;

    @JsonProperty("app_name")
    private String name;
    
}

接口定义如下:

@PostMapping("/apps/info")
public void save(@RequestBody AppInfoReq req){}

@GetMapping("/apps/info")
public List<AppInfo> searchApps(AppInfoReq req){
}

调用http请求
POST /apps/info

{
"app_name": "aaaa",
"is_disable": false
}

保存成功,数据正常持久化到数据库。

接着调用
GET /apps/info?is_disable=false
查询disabled字段为false的数据,却无法查询到结果,debug发现请求参数AppInfoReq.disabled 字段为空。
改用 GET /apps/info?disabled=false 即可

原因分析

POST接口请求方式为application/json方式,@JsonProperty 序列化能够生效
GET请求方式,参数拼接在URL后面,此时参数对象中的 @JsonProperty 不会生效。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容