Memory
314字约1分钟
2024-04-30
在Spring接口接收请求体参数反序列化时,如果请求体Json的key首字母为大写,那么序列化为实体类时是无法把这个key的值填充到实体类对应的属性上的。
如下所示:
{
"City": "广州"
}
// 这里改成City或CITY都没用
private String city;
因为Jackson通过Getter方法 getCity
获取属性,默认使用小写匹配Json-key,所以大写的 City
是无法匹配成功属性 city
的,最终实体参数为null。
@JsonProperty
注解,声明属性对应的Json-key@JsonProperty(value = "Name")
private String name;
@JsonAlias
定义属性映射的Key别名(列表)@JsonAlias(["City"])
private String city;
@JsonAutoDetect
注解,使用不同策略检查字段@JsonAutoDetect(
fieldVisibility = JsonAutoDetect.Visibility.ANY, // 字段可见性:所有;对所有字段进行识别,无论私有或公共
getterVisibility = JsonAutoDetect.Visibility.NONE, // Getter方法可见性:不使用;不通过Getter方法识别字段,就不会识别大写首字母
setterVisibility = JsonAutoDetect.Visibility.NONE // Setter方法可见性:不使用;不通过Setter方法识别字段
)