<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
<!-- <value>text/html;charset=UTF-8</value> -->
<!-- <value>text/xml;charset=UTF-8</value> -->
<!-- <value>text/plain;charset=UTF-8</value> -->
<!-- <value>text/javascript;charset=UTF-8</value> -->
<!-- <value>application/vnd.ms-excel;charset=UTF-8</value> -->
</list>
</property>
<property name="objectMapper">
<bean class="com.xywy.dto.converter.JsonObjectMapper">
<property name="dateFormat">
<bean class="java.text.SimpleDateFormat">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />
</bean>
</property>
<property name="timeZone" value="GMT+8" />
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
public class JsonObjectMapper extends ObjectMapper {
/**
*
*/
private static final long serialVersionUID = 8034942567620323925L;
public JsonObjectMapper() {
super();
this.setSerializerFactory(this.getSerializerFactory().withSerializerModifier(new MyBeanSerializerModifier()));
}
public class MyBeanSerializerModifier extends BeanSerializerModifier {
@Override
public List<BeanPropertyWriter> changeProperties(SerializationConfig config, BeanDescription beanDesc, List<BeanPropertyWriter> beanProperties) {
//循环所有的beanPropertyWriter
for (Object beanProperty : beanProperties) {
BeanPropertyWriter writer = (BeanPropertyWriter) beanProperty;
Class<?> clazz = writer.getType().getRawClass();
//字符串
if (String.class.equals(clazz)) {
writer.assignNullSerializer(new JsonSerializer<Object>() {
@Override
public void serialize(Object value, JsonGenerator jg, SerializerProvider sp) throws IOException, JsonProcessingException {
jg.writeString("");
}
});
}
//list
else if(List.class.isAssignableFrom(clazz)){
writer.assignNullSerializer(new JsonSerializer<Object>() {
@Override
public void serialize(Object value, JsonGenerator jg, SerializerProvider sp) throws IOException, JsonProcessingException {
jg.writeObject(Collections.EMPTY_LIST);
}
});
}
//map
else if (Map.class.isAssignableFrom(clazz)) {
writer.assignNullSerializer(new JsonSerializer<Object>() {
@Override
public void serialize(Object value, JsonGenerator jg, SerializerProvider sp) throws IOException, JsonProcessingException {
jg.writeObject(Collections.EMPTY_MAP);
}
});
}
//String[]
else if (String[].class.isAssignableFrom(clazz)) {
writer.assignNullSerializer(new JsonSerializer<Object>() {
@Override
public void serialize(Object value, JsonGenerator jg, SerializerProvider sp) throws IOException, JsonProcessingException {
jg.writeObject(new String[0]);
}
});
}
//其它
else {
writer.assignNullSerializer(new JsonSerializer<Object>() {
@Override
public void serialize(Object value, JsonGenerator jg, SerializerProvider sp) throws IOException, JsonProcessingException {
jg.writeString("");
}
});
}
}
return beanProperties;
}
}
}