zoukankan      html  css  js  c++  java
  • 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;
    }
     
  • 相关阅读:
    JOI2017FinalC JOIOI 王国
    JOISC2017C 手持ち花火
    P4336 [SHOI2016]黑暗前的幻想乡
    SP104 HIGH
    P3160 [CQOI2012]局部极小值
    P4965 薇尔莉特的打字机
    【BZOJ4361】isn
    P3506 [POI2010]MOT-Monotonicity 2
    P3214 [HNOI2011]卡农
    P3704 [SDOI2017]数字表格
  • 原文地址:https://www.cnblogs.com/luoluoshidafu/p/10979018.html
Copyright © 2011-2022 走看看