Spring Boot返回值将null值转化为空字符串

950 阅读1分钟

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;