如果后端字段为null 前端经常判断null也是挺麻烦的
配置jackso可以达到
把字符串null转为""
null数组转为[]
添加两种处理null的方法 。你也可以添加更多比如int为null的处理、布尔为null的处理等
public class CustomJsonSerializer {
public static class CollectionSerializer extends JsonSerializer<Object> {
@Override
public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if (value == null) {
value = new ArrayList();
}
gen.writeObject(value);
}
}
public static class StringSerializer extends JsonSerializer<Object> {
@Override
public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if (value == null) {
value = "";
}
gen.writeObject(value);
}
}
}
配置jackson
@Configuration
public class JacksonConfig {
@Bean
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
ObjectMapper objectMapper = builder.createXmlMapper(false).build();
objectMapper.setSerializerFactory(objectMapper.getSerializerFactory().withSerializerModifier(new BeanSerializerModifier() {
@Override
public List<BeanPropertyWriter> changeProperties(SerializationConfig config, BeanDescription beanDesc, List<BeanPropertyWriter> beanProperties) {
for (BeanPropertyWriter beanProperty : beanProperties) {
Class clazz = beanProperty.getType().getRawClass();
//判断类型
if (clazz.isArray()) {
beanProperty.assignNullSerializer(new CustomJsonSerializer.CollectionSerializer());
} else if (clazz == String.class) {
beanProperty.assignNullSerializer(new CustomJsonSerializer.StringSerializer());
}
}
return beanProperties;
}
}));
return objectMapper;
}
}
配置结束 这样前端对于这两种就不用再判断null了