Jackson 转换JSON,SpringMVC ajax 输出,当值为null或者空不输出字段@JsonInclude
2017-12-18 15:26
549 查看
当我们提供接口的时候, Ajax 返回的时候,当对象在转换 JSON (序列化)的时候,值为null或者为“” 的字段还是输出来了。看上去不优雅。
现在我叙述三种方式来控制这种情况。
注解的方式( @JsonInclude(JsonInclude.Include.NON_EMPTY))
通过@JsonInclude 注解来标记,但是值的可选项有四类。
Include.Include.ALWAYS (Default / 都参与序列化)
Include.NON_DEFAULT(当Value 为默认值的时候不参与,如Int a; 当 a=0 的时候不参与)
Include.NON_EMPTY(当Value 为“” 或者null 不输出)
Include.NON_NULL(当Value 为null 不输出)
我的对象定义(其实就是一个API接口的返回对象):
我的前端返回值:
如上,基本达到我的要求了。
先还是上一下 Jackson 的 Maven 配置:
再来一个XML配置:
其实所有的姿势都是针对 Jackson 提供给我们的入口
其实这些都是一些基础知识,我只是整合下,后面要丰富首页的内容。
现在我叙述三种方式来控制这种情况。
注解的方式( @JsonInclude(JsonInclude.Include.NON_EMPTY))
通过@JsonInclude 注解来标记,但是值的可选项有四类。
Include.Include.ALWAYS (Default / 都参与序列化)
Include.NON_DEFAULT(当Value 为默认值的时候不参与,如Int a; 当 a=0 的时候不参与)
Include.NON_EMPTY(当Value 为“” 或者null 不输出)
Include.NON_NULL(当Value 为null 不输出)
注解使用如下:
//如果是null 和 “” 不返回 @JsonInclude(JsonInclude.Include.NON_EMPTY) private T data;
我的对象定义(其实就是一个API接口的返回对象):
public class APIResult<T> implements Serializable { //状态 private Integer status; //描述 private String message; //如果是null 不返回 @JsonInclude(JsonInclude.Include.NON_EMPTY) private T data; /*** getter / setter***/ }
我的前端返回值:
{"status":200,"message":"success"}
如上,基本达到我的要求了。
代码方式:
ObjectMapper mapper = new ObjectMapper(); //null不序列化 mapper.setSerializationInclusion(Include.NON_NULL); Demo demo = new Demo(200,"",null); String json = mapper.writeValueAsString(demo); System.out.println(json); //结果:{"st":200,"name":""} 为null的属性没输出。
Spring配置文件实现
当我们整个项目都需要某一种规则的时候,那么我们就采用配置文件配置。先还是上一下 Jackson 的 Maven 配置:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency>
再来一个XML配置:
<bean id="objectMapper" class="com.fasterxml.jackson.databind.ObjectMapper"> <property name="serializationInclusion"> <value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value> </property> </bean> <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper" ref="objectMapper" /> </bean> </mvc:message-converters> </mvc:annotation-driven>
其实所有的姿势都是针对 Jackson 提供给我们的入口
“JsonInclude.Include”来处理的。所以只要记住最上面讲的几个级别就可以了。
其实这些都是一些基础知识,我只是整合下,后面要丰富首页的内容。
相关文章推荐
- 通过jackson使spring springmvc 在ajax返回时,不输出为null 的对应属性
- Spring boot 中 使用 Jackson 将null 字段转换为空字符串写法
- Gson解析或者转换对象成json字符串时,String为NULL转空字符串处理方案
- bean转json时null字段不转换的方法
- jackson 实体转json 为NULL或者为空不参加序列化
- 【Ajax】代理直接输出JSON或者XML的解决方法
- 【Ajax】代理直接输出JSON或者XML的解决方法
- jackson 实体转json 为NULL或者为空不参加序列化
- 使用springMVC注解@ResponseBody与jackson工具类在ajax请求中实现对象与json之间的相互转化
- SpringMVC 中List 对象转换成Json格式 List对象中属性为NUll解决
- Java 用Jackson进行json和object之间的转换(并解决json中存在新增多余字段的问题)
- Spring mvc jackson输出null为空字符串、单引号、字段和数字加引号问题Spring mvc3 jackson输出null为空字符串、单引号、字段和数字加引号问题
- jackson实体类转换json大小写及空字段忽略
- jackson 实体转json 为NULL或者为空字符串或默认值时不参加序列化
- fastjson序列化时不输出值为null的字段
- jackson 实体转json属性为NULL或者为空不参加序列化
- Jackson 输出Json时过滤空值、null、“”
- jackson 实体转json 为NULL或者为空不参加序列化
- jackson 实体转json 为NULL或者为空不参加序列化
- jackson 实体转json 为NULL或者为空不参加序列化