今天又发现一个奇葩问题,我后端使用实体类(属性均为全大写字母)接收前端的json数据,发现当key为小写时数据能正常接收,key为大写时就接收不到数据了。
{
"list": [
{"TIME":"2021-01-01","BPZ_LEV":null,"BPZ_INQ":null,"ROW_ID":1}
]
}
经查阅发现只要在实体类的每个属性加上@JsonProperty注解即可解决这个问题。
public class KeyStationUpdateVO {
@ApiModelProperty(value="日期",example="2019-01-01")
@NotNull
@JsonProperty
@Pattern(regexp = "^\\d{4}-\\d{2}-\\d{2}$", message = "日期格式不正确")
private String TIME;
}
此外,@JsonProperty注解还可以给属性定义别的名称,该对象将按照你给的别名进行序列化。
public class KeyStationUpdateVO {
@ApiModelProperty(value="日期",example="2019-01-01")
@NotNull
@JsonProperty("date") //此时该属性序列化时key会变为date
@Pattern(regexp = "^\\d{4}-\\d{2}-\\d{2}$", message = "日期格式不正确")
private String TIME;
}