1.配置类:全局生效
@Configuration
public class JacksonConfig {
@Bean
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
ObjectMapper objectMapper = builder.createXmlMapper(false).build();
objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
@Override
public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
jsonGenerator.writeString("");
}
});
return objectMapper;
}
}
2.自定义转化器,直接作用在字段上
---自定义序列化类
/**
* 处理字符串类型的null值
*/
@Component
public class NullStringJsonSerializer extends JsonSerializer<String> {
@Override
public void serialize(String o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
throws IOException {
jsonGenerator.writeString("");
}
---注解指定序列化
注:网上大多使用@JsonSerialize(usring=NullStringJsonSerializer.class),我试了很多方法都没有用,只有使用@JsonSerialize(nullsUsing = NullStringJsonSerializer.class)才会起作用
/**
* 变更原因
*/
@Excel(name = "变更原因", width = 15)
@ApiModelProperty(value = "变更原因")
@JsonSerialize(nullsUsing = NullStringJsonSerializer.class)
private java.lang.String changeReason;