json序列化时,不序列化值为null和""的字段

本文介绍如何使用Jackson库中的@JsonInclude注解来控制Java对象转JSON字符串时的字段包含策略,包括忽略空值、默认值等四种不同场景。
<!-- jackson -->  
<dependency>  
    <groupId>com.fasterxml.jackson.core</groupId>  
    <artifactId>jackson-core</artifactId>  
    <version>2.2.3</version>  
</dependency>  
<dependency>  
    <groupId>com.fasterxml.jackson.core</groupId>  
    <artifactId>jackson-databind</artifactId>  
    <version>2.2.3</version>  
</dependency>  
<dependency>  
    <groupId>com.fasterxml.jackson.core</groupId>  
    <artifactId>jackson-annotations</artifactId>  
    <version>2.2.3</version>  
</dependency> 
在类上添加@JsonInclude(Include.NON_EMPTY),在javabean to json的序列化过程中,将不序列化值为null或者为”“的字段
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ResponseMetaPojo implements Serializable {
}
另外,和@JsonInclude()的参数一共有四种:
Include.Include.ALWAYS 默认   
Include.NON_DEFAULT 属性为默认值不序列化   
Include.NON_EMPTY 属性为 空("") 或者为 null 都不序列化   
Include.NON_NULL 属性为NULL 不序列化  
在Java中,若要在JSON序列化忽略null字段同的JSON处理库有同的实现方式: - **Jackson**:默认情况下,Jackson会序列化null字段。但如果之前配置了全局忽略null字段,可通过以下方式恢复默认行为。 ```java import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.ObjectMapper; public class JacksonExample { public static void main(String[] args) throws Exception { // 创建ObjectMapper实例 ObjectMapper objectMapper = new ObjectMapper(); // 配置全局忽略null objectMapper.setSerializationInclusion(JsonInclude.Include.ALWAYS); // 示例对象 User user = new User(); user.setName(null); user.setAge(25); // 序列化对象 String json = objectMapper.writeValueAsString(user); System.out.println(json); } } class User { private String name; private int age; // Getters and Setters public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } ``` - **阿里FastJSON**:FastJSON默认会序列化null字段,可直接使用其进行序列化操作。 ```java import com.alibaba.fastjson.JSONObject; class Hasds { private Long configId = 12L; private Long mybjSteamId; private String userUid; private String streamName = "asdasdasd"; // Getters and Setters public Long getConfigId() { return configId; } public void setConfigId(Long configId) { this.configId = configId; } public Long getMybjSteamId() { return mybjSteamId; } public void setMybjSteamId(Long mybjSteamId) { this.mybjSteamId = mybjSteamId; } public String getUserUid() { return userUid; } public void setUserUid(String userUid) { this.userUid = userUid; } public String getStreamName() { return streamName; } public void setStreamName(String streamName) { this.streamName = streamName; } } public class FastJSONExample { public static void main(String[] args) { Hasds hasds = new Hasds(); // jsonString 会包含为null字段 String jsonString = JSONObject.toJSONString(hasds); System.out.println(jsonString); } } ``` - **Spring Boot(使用Jackson)**:若在Spring Boot项目中使用Jackson进行JSON序列化,可通过配置`ObjectMapper`来确保忽略null字段。 ```java import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class JacksonConfig { @Bean public ObjectMapper objectMapper() { ObjectMapper objectMapper = new ObjectMapper(); // 配置全局忽略null objectMapper.setSerializationInclusion(JsonInclude.Include.ALWAYS); return objectMapper; } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值