如何解决用Jackson序列化ImmutableMap
我正在尝试使用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的默认字符串输出,而不是看到指定的序列化。
解决方法
使用addKeySerializer代替addSerializer解决了该问题。
SimpleModule module = new SimpleModule();
module.addKeySerializer(new DummySerializer(Dummy.class));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。