【发布时间】:2020-10-26 15:26:48
【问题描述】:
我正在尝试使用 Jackson 序列化 ImmutableMap
序列化器类:
public class DummySerializer extends StdSerializer<Dummy> {
private final ObjectMapper mapper = new ObjectMapper();
protected DummySerializer(Class<Dummy> t) {
super(t);
}
@Override
public void serialize(Dummy dummyObj,
JsonGenerator gen,
SerializerProvider serializers)
throws IOException {
StringWriter writer = new StringWriter();
mapper.writeValue(writer, dummyObj.getDummyId());
gen.writeFieldName(writer.toString());
}
}
用法:
ImmutableMap<Dummy, DummyInfo> map = //initialization
SimpleModule module = new SimpleModule();
module.addSerializer(new DummySerializer(Dummy.class));
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(module);
mapper.writeValueAsString(map);
输出不是看到指定的序列化,而是 ImmutableMap 的默认字符串输出。
【问题讨论】:
-
您是否尝试过从
jackson-datatypes-guava注册GuavaModule以便Jackson 知道如何处理ImmutableMap? github.com/FasterXML/jackson-datatypes-collections/tree/master/…
标签: java serialization jackson immutables-library