springboot響應json null值過濾方式
springboot響應json null值過濾
spring: jackson: default-property-inclusion: non_null
隻需要在application.yml中配置以上內容即可。
springboot處理返回json的null值
在後端數據接口項目開發中,經常遇到返回的數據中有null值,導致前端需要進行判斷處理,否則容易出現undefined的情況,如何便捷的將null值轉換為空字符串?
以SpringBoot項目為例,SSM同理。
1、新建配置類(JsonConfig.java)
import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializerProvider; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import java.io.IOException; @Configuration public class JsonConfig { @Bean @Primary @ConditionalOnMissingBean(ObjectMapper.class) public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { ObjectMapper objectMapper = builder.createXmlMapper(false).build(); // 通過該方法對mapper對象進行設置,所有序列化的對象都將按改規則進行系列化 // Include.Include.ALWAYS 默認 // Include.NON_DEFAULT 屬性為默認值不序列化 // Include.NON_EMPTY 屬性為 空("") 或者為 NULL 都不序列化,則返回的json是沒有這個字段的。這樣對移動端會更省流量 // Include.NON_NULL 屬性為NULL 不序列化,就是為null的字段不參加序列化 //objectMapper.setSerializationInclusion(Include.NON_EMPTY); // 字段保留,將null值轉為"" objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() { @Override public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeString(""); } }); return objectMapper; } }
2、在啟動類Application中
記得添加Scan註解,防止無法掃描到配置類。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- springboot配置Jackson返回統一默認值的實現示例
- SpringBoot之Json的序列化和反序列化問題
- SpringBoot雪花算法主鍵ID傳到前端後精度丟失問題的解決
- SpringBoot主鍵ID傳到前端後精度丟失的問題解決
- 解決SpringBoot下Redis序列化亂碼的問題