springboot怎么配置Jackson返回统一默认值
这篇文章主要介绍“springboot怎么配置Jackson返回统一默认值”,在日常操作中,相信很多人在springboot怎么配置Jackson返回统一默认值问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”springboot怎么配置Jackson返回统一默认值”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
在项目开发中,我们返回的数据或者对象没有的时候一般直接返回的null
有数据时的返回值
{ "flag":true, "code":"10000", "msg":"成功!", "data":{ "id":32, "templateType":1, "templateName":"我的测试模板1", "freightName":"我的测试标题1", "listArea":[ { "id":968, "templateId":32, "freightPrice":15, } ], "templateDescEntity":{ "id":1 "name":"xxx" } } }
没有数据时的返回值
{ "flag":true, "code":"10000", "msg":"成功!", "data":{ "id":32, "templateType":1, "templateName":null, "freightName":null, "listArea":null, "templateDescEntity":null } }
这种情况下数据返回给前端,前端需要做大量的空值判断如前端调使用属性data.templateDescEntity.id的时候就会直接报异常此时我们可以使用返回值统一处理,配置如下
pom.xml添加
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.5</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency>
java类添加配置
packagecom.ys.mall.core.product.config; importcom.fasterxml.jackson.core.JsonGenerator; importcom.fasterxml.jackson.databind.JsonSerializer; importcom.fasterxml.jackson.databind.ObjectMapper; importcom.fasterxml.jackson.databind.SerializerProvider; importorg.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; importorg.springframework.context.annotation.Bean; importorg.springframework.context.annotation.Configuration; importorg.springframework.context.annotation.Primary; importorg.springframework.http.converter.json.Jackson2ObjectMapperBuilder; importjava.io.IOException; importjava.lang.reflect.Field; importjava.util.Collection; importjava.util.List; importjava.util.Map; importjava.util.Objects; /** *数据返回给前端时,设置null值默认为"" * *@authorcgh *@date2020/12/1410:35 */ @Configuration publicclassJacksonConfig{ @Bean @Primary @ConditionalOnMissingBean(ObjectMapper.class) publicObjectMapperjacksonObjectMapper(Jackson2ObjectMapperBuilderbuilder){ ObjectMapperobjectMapper=builder.createXmlMapper(false).build(); objectMapper.getSerializerProvider().setNullValueSerializer(newJsonSerializer<Object>(){ @Override publicvoidserialize(Objecto,JsonGeneratorjsonGenerator,SerializerProviderserializerProvider)throwsIOException{ StringfieldName=jsonGenerator.getOutputContext().getCurrentName(); try{ //反射获取字段类型 Fieldfield=jsonGenerator.getCurrentValue().getClass().getDeclaredField(fieldName); if(CharSequence.class.isAssignableFrom(field.getType())){ //字符串型空值"" jsonGenerator.writeString(""); return; }elseif(Collection.class.isAssignableFrom(field.getType())){ //列表型空值返回[] jsonGenerator.writeStartArray(); jsonGenerator.writeEndArray(); return; }elseif(Map.class.isAssignableFrom(field.getType())){ //map型空值或者bean对象返回{} jsonGenerator.writeStartObject(); jsonGenerator.writeEndObject(); return; } }catch(NoSuchFieldExceptionignored){ } jsonGenerator.writeString(""); } }); returnobjectMapper; } }
添加空值统一处理后的返回值
{ "flag":true, "code":"10000", "msg":"成功!", "data":{ "id":32, "templateType":1, "templateName":"", "freightName":"", "listArea":[], "templateDescEntity":{} } }
到此,关于“springboot怎么配置Jackson返回统一默认值”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注恰卡编程网网站,小编会继续努力为大家带来更多实用的文章!
推荐阅读
-
springboot实现基于aop的切面日志
本文实例为大家分享了springboot实现基于aop的切面日志的具体代码,供大家参考,具体内容如下通过aop的切面方式实现日志...
-
SpringBoot定时任务功能怎么实现
-
SpringBoot中的@Import注解怎么使用
-
SpringBoot整合Lombok及常见问题怎么解决
-
springboot图片验证码功能模块怎么实现
-
Springboot+SpringSecurity怎么实现图片验证码登录
-
SpringBoot注解的知识点有哪些
SpringBoot注解的知识点有哪些这篇“SpringBoot注...
-
SpringBoot2.x中management.security.enabled=false无效怎么解决
-
springboot怎么禁用某项健康检查
springboot怎么禁用某项健康检查今天小编给大家分享一下sp...
-
SpringBoot2怎么自定义端点