请记住,默认情况下,杰克逊从getter或setter(第一个匹配的)中确定属性名称。
为了反序列化类型的对象
POJOUserDetails,Jackson将寻找三个属性
public void setFirstName(String firstName) {public void setLastName(String lastName) {public void setActive(boolean isActive) {
在JSON中。这些基本上
firstName是
lastName,
active。
您得到以下JSON
{ "firstName": "Test", "lastName": "1", "isActive": 1 }
所以
firstName和
lastName被映射,但是您没有名为的属性
isActive。
Jackson依赖于Java Bean的命名约定及其访问器(获取器)和更改器(设置器)。对于像这样的领域
private boolean isActive;
适当的setter / getter名称是
public boolean getIsActive() { return isActive;}public void setIsActive(boolean isActive) { this.isActive = isActive;}
因此,您有两种可能的解决方案。如上所示更改您的获取/设置者或使用注释您的字段,
@JsonProperty以便Jackson使用字段名称来确定属性名称
@JsonPropertyprivate boolean isActive;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)