我试图覆盖@JsonProperty
在序列化过程中指定的属性名称,但在生成的 json 中同时获取旧的和新的命名属性。
实体:
class Bean {
@JsonProperty("p")
String prop;
@JsonCreator
Bean(@JsonProperty("p") String prop) {
this.prop = prop;
}
}
序列化代码:
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(new PropertyNamingStrategy() {
@Override
public String nameForField(MapperConfig<?> config, AnnotatedField field, String defaultName) {
return "prop";
}
});
System.out.println(mapper.writeValueAsString(new Bean("test")));
结果是:
{"p":"test","prop":"test"}
根据杰克逊的代码,发生这种情况是因为构造函数参数也用@JsonProperty
. 我正在使用杰克逊 1.9.5。
有没有办法禁用构造函数参数并获取{"prop":"test"}
?提前感谢您的帮助!