0
我試圖覆蓋序列化期間在@JsonProperty
中指定的屬性名稱,但在生成的json中同時獲取新的和新的命名屬性。在傑克遜自定義命名策略和@JsonProperty
實體:
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"}
Accrding傑克遜的代碼,這種情況是因爲構造函數的參數也與@JsonProperty
註解。我正在使用傑克遜1.9.5。
有沒有辦法可以禁用構造函數參數並獲得{"prop":"test"}
? 感謝您的幫助!
你爲什麼要混合一切?只需將'@ JsonProperty'放在字段上,而不需要'value'屬性。如果該字段被稱爲'prop',那麼它將被序列化。 –
「混合」不是一個正確的詞。我有'@ JsonProperty'類,並希望創建另一個'ObjectMapper',使用非默認命名策略。 – catdog