シリアル化中に指定されたプロパティ名をオーバーライドしようとしています@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
ます。Jackson 1.9.5 を使用しています。
コンストラクターのパラメーターを無効にして取得する方法はあります{"prop":"test"}
か? 事前に助けてくれてありがとう!