我有一個字段的custom JsonSerializer(簡化代碼):如何獲得屬性或字段名稱自定義JSON序列
@JsonSerialize(using=Text1Serializer.class)
@JsonProperty("text1") // I need this inside the custom serializer
@Override
public String getTextOne() {
return "foo";
}
// ...
public static class Text1Serializerextends JsonSerializer<String> {
@Override
public void serialize(String value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
// how to get "text1" here?
provider.defaultSerializeValue(value, jgen);
}
}
因爲我需要序列約十等領域具有類似的邏輯,這只是取決於字段名稱,如果我可以在自定義序列化程序中獲得屬性名稱,它將非常有幫助 - 而不是寫入十個相同的序列化程序。
我見過的serialize()
方法內我可以得到JsonGenerator.getCurrentValue()
整個對象(見this answer),但我沒有」找到一個辦法讓字段名。
我使用的是傑克遜2.6
你說的是在我的'JsonSerializer'中添加一個私人字段,'createContextual ()'用'property.getName()'設置並最終返回'this'?如果是這樣,它看起來有點難看,但工作。 – watery
@watery:createContextual()應該添加屬性名稱來創建序列化程序的新實例,而不僅僅是修改自身 – araqnid