软件编程
位置:首页>> 软件编程>> java编程>> SpringBoot项目中处理返回json的null值(springboot项目为例)

SpringBoot项目中处理返回json的null值(springboot项目为例)

作者:ryantom  发布时间:2023-10-26 04:49:06 

标签:spring,boot,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注解,防止无法扫描到配置类。

ps:下面看下spring boot 使用 json 响应时去除 null 的字段


import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
public class RespObject implements Serializable {
 private static final long serialVersionUID = -1560603887556641494L;
 ....
 @JsonInclude(Include.NON_NULL)
 public Object respMsg;
 @JsonInclude(Include.NON_NULL)
 public Object respData;
 ....
}

总结

以上所述是小编给大家介绍的SpringBoot项目中处理返回json的null值,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://www.cnblogs.com/ryantom/archive/2019/10/28/11752616.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com