<!-- 返回字符串utf-8编码-->
<mvc:annotation-driven>
<!-- 消息转换器 -->
<mvc:message-converters register-defaults="true">
<!-- 处理responseBody 里面日期类型 -->
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper" ref="customObjectMapper"></property>
</bean>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<bean name="customObjectMapper" class="com.sky.ddt.config.CustomObjectMapper"></bean>
public class CustomObjectMapper extends ObjectMapper {
public CustomObjectMapper() {
super();
// 设置date类型转换
setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
// 反序列化忽视不存在属性
configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
simpleModule.addSerializer(LocalDateTime.class,LocalDateTimeToStringSerializer.instance);
registerModule(simpleModule);
}
}
LocalDateTimeToStringSerializer是localDateTime转换器,可以参考设计自定义转换
public class LocalDateTimeToStringSerializer extends StdSerializer<LocalDateTime> {
public static final LocalDateTimeToStringSerializer instance = new LocalDateTimeToStringSerializer();
private LocalDateTimeToStringSerializer() {
super(LocalDateTime.class);
}
@Override
public void serialize(LocalDateTime dateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
if (dateTime == null) {
jsonGenerator.writeNull();
} else {
jsonGenerator.writeString(getFormatStr(dateTime));
}
}
private String getFormatStr(LocalDateTime dateTime) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String str = dateTime.format(formatter);
return str;
}
}
自定义设计LongToStringSerializer,当long比较大的时候才转字符串
public class LongToStringSerializer extends StdSerializer<Long> {
public static LongToStringSerializer instance=new LongToStringSerializer();
public LongToStringSerializer() {
super(Long.class);
}
@Override
public void serialize(Long value, JsonGenerator gen, SerializerProvider provider) throws IOException {
if(value==null){
gen.writeNull();
}else if(value>Integer.MAX_VALUE||value<Integer.MIN_VALUE){
gen.writeString(String.valueOf(value));
}else{
gen.writeNumber(value);
}
}
}