Configuring ObjectMapper in Spring

前端 未结 12 1704
迷失自我
迷失自我 2020-11-22 10:46

my goal is to configure the objectMapper in the way that it only serialises element which are annotated with @JsonProperty.

In order to do

12条回答
  •  既然无缘
    2020-11-22 11:12

    I've used this with Jackson 2.x and Spring 3.1.2+

    servlet-context.xml:

    Note that the root element is , so you may need to remove beans and add mvc to some of these elements depending on your setup.

        
            
                
                
                
                    
                
            
        
    
        
    

    au.edu.unimelb.atcom.transfer.json.mappers.JSONMapper.java:

    public class JSONMapper extends ObjectMapper {
    
        public JSONMapper() {
            SimpleModule module = new SimpleModule("JSONModule", new Version(2, 0, 0, null, null, null));
            module.addSerializer(Date.class, new DateSerializer());
            module.addDeserializer(Date.class, new DateDeserializer());
            // Add more here ...
            registerModule(module);
        }
    
    }
    

    DateSerializer.java:

    public class DateSerializer extends StdSerializer {
    
        public DateSerializer() {
            super(Date.class);
        }
    
        @Override
        public void serialize(Date date, JsonGenerator json,
                SerializerProvider provider) throws IOException,
                JsonGenerationException {
            // The client side will handle presentation, we just want it accurate
            DateFormat df = StdDateFormat.getBlueprintISO8601Format();
            String out = df.format(date);
            json.writeString(out);
        }
    
    }
    

    DateDeserializer.java:

    public class DateDeserializer extends StdDeserializer {
    
        public DateDeserializer() {
            super(Date.class);
        }
    
        @Override
        public Date deserialize(JsonParser json, DeserializationContext context)
                throws IOException, JsonProcessingException {
            try {
                DateFormat df = StdDateFormat.getBlueprintISO8601Format();
                return df.parse(json.getText());
            } catch (ParseException e) {
                return null;
            }
        }
    
    }
    

提交回复
热议问题