@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 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 不会生效。

你可能感兴趣的:(@JsonProperty 序列化失效问题记录)