我想使用Jackson 2.9.6用名为Foo
的枚举值列表序列化类Bar
。
public class Foo {
@JsonProperty("myBars")
List<Bar> bars;
}
和
public enum Bar {
@JsonProperty("Jane")
JOHN,
@JsonProperty("Roe")
DOE
}
默认情况下,序列化输出
{
"myBars": ["Jane", "Roe"]
}
但是,我希望序列化输出
{
"myBars": "Jane;Roe"
}
因此,我为字段bars
添加了一个自定义序列化程序,该序列化过程如下:
public void serialize(List<Object> list, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeObject(StringUtils.join(list, ";")); // StringUtils from Apache Commons
}
不足为奇的是
{
"myBars": "JOHN;DOE"
}
问题:如何在保留枚举值的默认序列化的同时使用自定义序列化器?
到目前为止,我的解决方案是迭代列表并使用单独的ObjectMapper
来序列化单个枚举值。转义字符串仍然存在一些问题,但是至少这似乎可行。但是,我想知道是否也可以以一种简洁的方式来完成此操作。