我有一个字段的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