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

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;
}
 

 

转载于:https://www.cnblogs.com/luoluoshidafu/p/10979018.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值