• 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;
    }
     
  • 相关阅读:
    C# Time Class using MySQL
    csharp: Double Convert To String
    csharp: 图片字符间距
    HtmlEntities
    csharp: Microsoft SqlHelper
    csharp: read excel using Aspose.Cells
    JAVA核心技术I---JAVA基础知识(命令行)
    JAVA核心技术I---JAVA基础知识(Jar文件导入导出)
    JAVA核心技术I---JAVA基础知识(package和import)
    JAVA核心技术I---JAVA基础知识(知识回顾)
  • 原文地址:https://www.cnblogs.com/luoluoshidafu/p/10979018.html
Copyright © 2020-2023  润新知