SpringBoot返回结果如果为null或空值不显示
SpringBoot返回结果如果为null或空值不显示
·
需要配置一下这个工具类,同时每个需要不为null的实体需要加一个配置
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.StringHttpMessageConverter;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
/**
* @author ge.gao
* @version 1.0
* @date 2022/7/25 18:18
*/
@Configuration
public class FastjsonConverterUtil {
@Bean
public HttpMessageConverters customConverters() {
// 定义一个转换消息的对象
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
// 添加fastjson的配置信息 比如 :是否要格式化返回的json数据
FastJsonConfig fastJsonConfig = new FastJsonConfig();
// 这里就是核心代码了,WriteMapNullValue把空的值的key也返回
fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue);
//更新日期参数处理 2022-07-26
fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteDateUseDateFormat);
List<MediaType> fastMediaTypes = new ArrayList<MediaType>();
// 处理中文乱码问题
fastJsonConfig.setCharset(Charset.forName("UTF-8"));
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
fastConverter.setSupportedMediaTypes(fastMediaTypes);
// 在转换器中添加配置信息
fastConverter.setFastJsonConfig(fastJsonConfig);
StringHttpMessageConverter stringConverter = new StringHttpMessageConverter();
stringConverter.setDefaultCharset(Charset.forName("UTF-8"));
stringConverter.setSupportedMediaTypes(fastMediaTypes);
// 将转换器添加到converters中
return new HttpMessageConverters(stringConverter,fastConverter);
}
}
看过其他的分享有的说这两个只需要一个就可以,但是我试了发现不行,需要同时配置,有兴趣的可以一个一个试下
更新一下,用这种方式会导致日期全部变成数字,需要再配里面再加入一个日期参数的配置
//更新日期参数处理 2022-07-26
fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteDateUseDateFormat);
具体代码我已经放到配置类里面了,直接复制即可
再次更新:
上面的配置也会导致Long类型的Id数值精度丢失,后面几位都为0,有相同的场景下可以这么配置一下
JSONObject.toJSONString(tMessageBodyDto,SerializerFeature.WriteMapNullValue,SerializerFeature.WriteDateUseDateFormat)
更多推荐
已为社区贡献2条内容
所有评论(0)