自定义对象转换器 @ResponseBody 里json对象属性转换



import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
import com.fasterxml.jackson.databind.ser.std.DateTimeSerializerBase;
import org.joda.time.DateTime;

import java.io.IOException;
import java.text.DateFormat;

@JacksonStdImpl
public class DateTimeSerializer extends DateTimeSerializerBase {

    public final static DateTimeSerializer instance = new DateTimeSerializer(DateTime.class,false,null);

    private DateTimeSerializer(Class type, Boolean useTimestamp, DateFormat customFormat) {
        super(type, useTimestamp, customFormat);
    }

    @Override
    public DateTimeSerializerBase withFormat(Boolean timestamp, DateFormat customFormat) {
        return null;
    }

    @Override
    protected long _timestamp(DateTime value) {
        return (value == null) ? 0L : value.toDate().getTime();
    }

    @Override
    public void serialize(DateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        gen.writeNumber(_timestamp(value));
    }
}



import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.joda.time.DateTime;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import java.util.List;
@Configuration
public class DateTimeConfig extends WebMvcConfigurerAdapter {

    @Override
    public void extendMessageConverters(List> converters) {
        MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
        ObjectMapper objectMapper = jackson2HttpMessageConverter.getObjectMapper();
        SimpleModule simpleModule = new SimpleModule();
        simpleModule.addSerializer(DateTime.class, DateTimeSerializer.instance);
        objectMapper.registerModule(simpleModule);
        jackson2HttpMessageConverter.setObjectMapper(objectMapper);
        //放到第一个
        converters.add(0, jackson2HttpMessageConverter);
    }
}

你可能感兴趣的:(自定义对象转换器 @ResponseBody 里json对象属性转换)