Java中去除JSON数据中值为null的属性字段的方法

在Java开发过程中,经常会遇到需要将对象转换为JSON字符串的场景,当对象中包含值为null的字段时,这些字段也会被包含在生成的JSON字符串中,这可能会影响数据的可读性和传输效率,本文将详细介绍如何在Java中去除JSON数据中值为null的属性字段。
方法一:使用Jackson库
Jackson是一个流行的Java库,用于处理JSON数据,它提供了一种简单的方式来忽略值为null的字段。
1. 使用注解方式
可以在类的字段上添加@JsonInclude(JsonInclude.Include.NON_NULL)注解,这样在序列化时就会忽略值为null的字段,示例如下:
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
public class User {
private String name;
private Integer age;
private String email;
// getters and setters
}
public class Main {
public static void main(String[] args) throws Exception {
User user = new User();
user.setName("Alice");
user.setEmail(null);
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(user);
System.out.println(json); // 输出: {"name":"Alice"}
}
}
2. 全局配置方式

如果希望对整个项目中的所有实体类都应用这种策略,可以在Spring Boot的配置文件中进行全局配置:
jackson: defaultpropertyinclusion: non_null
方法二:使用Gson库
Gson是Google提供的一个用于处理JSON数据的库,它同样提供了一种机制来忽略值为null的字段。
1. 实现ExclusionStrategy接口
通过实现ExclusionStrategy接口,可以自定义哪些字段应该被忽略,示例如下:
import com.google.gson.ExclusionStrategy;
import com.google.gson.FieldAttributes;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class ExcludeNullValuesExclusionStrategy implements ExclusionStrategy {
@Override
public boolean shouldSkipField(FieldAttributes f) {
return f.getValue() == null;
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
}
public class Main {
public static void main(String[] args) {
Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExcludeNullValuesExclusionStrategy())
.create();
Person person = new Person("Alice", null);
String json = gson.toJson(person);
System.out.println(json); // 输出: {"name":"Alice"}
}
}
单元表格:方法对比
| 方法 | 使用场景 | 优点 | 缺点 |
| Jackson注解 | 单个类或少量类 | 简单易用 | 需要逐个类添加注解 |
| Jackson全局配置 | 整个项目 | 统一管理 | 可能影响其他服务接口 |
| Gson ExclusionStrategy | 灵活控制 | 高度定制化 | 实现相对复杂 |
相关问题与解答
问题1:如何在不修改源代码的情况下去除JSON中的null值?

答:可以通过全局配置的方式实现,例如在Spring Boot项目中,可以在application.yml文件中添加以下配置:
jackson: defaultpropertyinclusion: non_null
问题2:如何确保在使用第三方库时不会意外地去除null值?
答:在使用第三方库时,建议查阅该库的文档,了解其默认行为和配置选项,如果库支持自定义排除策略,可以根据实际情况进行调整,也可以在代码中显式地检查并处理null值,以确保数据的准确性。
以上内容就是解答有关“Java如何取掉json数据中值为null的属性字段”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。














