首页 > 编程语言 > 详细

Spring项目中使用jackson序列化key为对象Map

时间:2019-06-05 13:58:24      阅读:521      评论:0      收藏:0      [点我收藏+]
1.注入ObjectMapper
2.注册类HistoricTaskInstance的序列化和反序列化类HistoricTaskInstanceKeySerializer,HistoricTaskInstanceKeyDeSerializer
3.将新的Modeule注册到ObjectMapper中。
class A{
   //1.注入ObjectMapper,注意这个ObjectMapper是spring全局的。 @Autowired
private ObjectMapper objectMapper; public void setKeyProcessor(){    
    SimpleModule sm = new SimpleModule();
    //注册序列化,反序列化类。
    sm.addKeySerializer(HistoricTaskInstance.class,new HistoricTaskInstanceKeySerializer());
    sm.addKeyDeserializer(HistoricTaskInstance.class,new HistoricTaskInstanceKeyDeSerializer());
    //注册到ObjectMapper中。
    objectMapper.registerModule(sm);
 } 
}

static class HistoricTaskInstanceKeySerializer extends JsonSerializer<HistoricTaskInstance> {
private final ObjectMapper objectMapper = new ObjectMapper();
@Override
public void serialize(HistoricTaskInstance historicTaskInstance, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
StringWriter writer = new StringWriter();
objectMapper.writeValue(writer, historicTaskInstance);
jsonGenerator.writeFieldName(writer.toString());
}
}


static class SimpleObjectKeyDeSerializer extends KeyDeserializer {
private final ObjectMapper objectMapper = new ObjectMapper();
@Override
public HistoricTaskInstance deserializeKey(String key, DeserializationContext deserializationContext) throws IOException {
return objectMapper.readValue(key, HistoricTaskInstance.class);
}
}

class HistoricTaskInstance{
  private String name;
private String address;
}
 

 

Spring项目中使用jackson序列化key为对象Map

原文:https://www.cnblogs.com/luoluoshidafu/p/10979018.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!