@JsonInclude(JsonInclude.Include.NON_NULL)
public class Payer{
private String name;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
}
当我使用objectmepper.readValue(json_string, Payer.class)
和以下json字符串时:
{
"name": "fakeName",
"state": "verifird"
}
我得到了NPE。因为我有@JsonAnySetter
,所以state
字符串应该放入additionalProperties
中,我想知道为什么我在这里得到了NPE?
2条答案
按热度按时间waxmsbnn1#
在
Payer
类中包含name
的getter和setter:解析Json:
输出:
n3ipq98p2#
这可能是太晚了,但我有一个类似的问题,并发现问题是在Lombok岛建设者。我相信同样的情况也会发生在带有
additionalProperties
参数而没有@JsonIgnore
的构造函数上,所以你应该检查一下这个注解是否被添加到了生成的构造函数参数中。(可以使用lombok.config
添加)我通过根据How to exclude property from Lombok builder?从构建器中排除字段来解决这个问题。