2015-01-26 9 views

risposta

4

È possibile effettuare una semplice Jackson8Module che ti permettono di effettuare le seguenti operazioni:

ObjectMapper jacksonMapper = new ObjectMapper(); 
Jackson8Module module = new Jackson8Module(); 
module.addStringSerializer(LocalDate.class, (val) -> val.toString()); 
module.addStringSerializer(LocalDateTime.class, (val) -> val.toString()); 
jacksonMapper.registerModule(module); 

Il codice Jackson8Module estende solo Jackson SimpleModule per fornire Java 8 processi ecologici (può essere esteso per supportare altri metodi Jackson modulo):

public class Jackson8Module extends SimpleModule { 

    public <T> void addCustomSerializer(Class<T> cls, SerializeFunction<T> serializeFunction){ 
     JsonSerializer<T> jsonSerializer = new JsonSerializer<T>() { 
      @Override 
      public void serialize(T t, JsonGenerator jgen, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { 
       serializeFunction.serialize(t, jgen); 
      } 
     }; 
     addSerializer(cls,jsonSerializer); 
    } 

    public <T> void addStringSerializer(Class<T> cls, Function<T,String> serializeFunction) { 
     JsonSerializer<T> jsonSerializer = new JsonSerializer<T>() { 
      @Override 
      public void serialize(T t, JsonGenerator jgen, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { 
       String val = serializeFunction.apply(t); 
       jgen.writeString(val); 
      } 
     }; 
     addSerializer(cls,jsonSerializer); 
    } 

    public static interface SerializeFunction<T> { 
     public void serialize(T t, JsonGenerator jgen) throws IOException, JsonProcessingException; 
    } 
} 

Ecco il succo della Jackson8Module: https://gist.github.com/jeremychone/a7e06b8baffef88a8816

Problemi correlati