因为项目中需要将null 转换为空字符串传递给前段,所以研究了一下Spring boot 中如何使用 jackson 将null 转为空字符串的方法
1、重写
Jackson2ObjectMapperBuilder 类的
build 方法
2、重写
ObjectMapper 中的
getSerializerProvider() 中的
setNullValueSerializer() 方法
3、重写
WebMvcConfigurerAdapter 中的
configureMessageConverters() 方法
4、在启动类里增加
public ObjectMapper objectMapper() 初始化bean,并声明
@Primary
5、在
configureMessageConverters 中增加
converters.add(new MappingJackson2HttpMessageConverter(objectMapper()));
完整代码:
1、自定义的 Jackson2ObjectMapperBuilder
类
public class MyJackson2Object extends Jackson2ObjectMapperBuilder{
@SuppressWarnings("unchecked")
@Override
public <T extends ObjectMapper> T build() {
ObjectMapper om=new ObjectMapper();
// 重写 ObjectMapper 中的一个方法
om.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
@Override
public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
jgen.writeObject("");// 输出孔字符串
}
});
configure(om);
return (T) om;
}
}
2、在启动类里的用法
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new MappingJackson2HttpMessageConverter(objectMapper()));
super.configureMessageConverters(converters);
}
@Bean
@Primary
public ObjectMapper objectMapper(){
MyJackson2Object builder = new MyJackson2Object();
builder.propertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
builder.indentOutput(true).dateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));// 设置时间格式化
// converters.add(new MappingJackson2XmlHttpMessageConverter(builder.createXmlMapper(true).build()));
return builder.build();
}
本人测试结果如下:
{
"code": 0,
"msg": "",
"data": [
{
"id": 1,
"page": 1,
"rows": 10,
"remark": "",
"name": "A",
"create_date": "2016-05-16 16:47:59",
"update_date": ""
},
{
"id": 2,
"page": 1,
"rows": 10,
"remark": "",
"name": "B",
"create_date": "2016-05-16 16:48:04",
"update_date": ""
}
]
}
"code": 0,
"msg": "",
"data": [
{
"id": 1,
"page": 1,
"rows": 10,
"remark": "",
"name": "A",
"create_date": "2016-05-16 16:47:59",
"update_date": ""
},
{
"id": 2,
"page": 1,
"rows": 10,
"remark": "",
"name": "B",
"create_date": "2016-05-16 16:48:04",
"update_date": ""
}
]
}