从品牌网站建设到网络营销策划,从策略到执行的一站式服务
使用jackson进行序列化时,往往会遇到后台某个实体对象的属性为null,当序列化成json时对应的属性也为null;这样在某些前端组件上应用该json对象会报错。(例如:echarts)
成都创新互联公司专注于企业成都全网营销推广、网站重做改版、新荣网站定制设计、自适应品牌网站建设、H5页面制作、商城开发、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为新荣等各大城市提供网站开发制作服务。下面总结了两种方法,解决了当属性为null时不参与序列化:
方法一:
1.实体上使用如下注解 @JsonInclude(Include.NON_NULL)
将该标记放在属性上,如果该属性为NULL则不参与序列化 ;如果放在类上边,那对这个类的全部属性起作用。
具体取值有:
//Include.Include.ALWAYS 默认
//Include.NON_DEFAULT 属性为默认值不序列化
//Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化
//Include.NON_NULL 属性为NULL 不序列化
注:使用了该注解,那么在import时需要把一下两个类引入到源文件中
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
2.代码上使用如下方法:
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
User user = new User(1,"",null);
String outJson = mapper.writeValueAsString(user);
System.out.println(outJson);
通过该方法对mapper对象进行设置,所有序列化的对象都将按改规则进行系列化 。
具体取值有:
//Include.Include.ALWAYS 默认
//Include.NON_DEFAULT 属性为默认值不序列化
//Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化
//Include.NON_NULL 属性为NULL 不序列化
注意:只对VO起作用;对Map List不起作用
ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(Include.NON_NULL); Map map = new HashMap(); map.put("a", null); map.put("b", "b"); String ret_val = mapper.writeValueAsString(map); System.err.println(ret_val); Map m = mapper.readValue(ret_val, Map.class); System.err.println(m.get("a") + "|" + m.get("b")); 输出: {"b":"b","a":null} null|b
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图