Gson 序列化NULL值

教程分享 > Java教程 (3289) 2023-03-28 11:29:14

前言

在Gson中实现的默认行为是忽略空对象字段。例如,如果在Employee对象中,我们不指定电子邮件(即电子邮件是null),那么电子邮件将不是序列化JSON输出的一部分。
Gson忽略空字段,因为此行为允许更紧凑的JSON输出格式。
GSON

1.如何在序列化期间允许空值

要配置GSON实例来输出null,我们必须使用serializeNulls()GsonBuilder对象。
Gson gson = new GsonBuilder()
        .serializeNulls()
        .create();

2.演示

让我们看一下Gson的行为,同时启用或禁用空字段序列化。
这是员工类,有四个字段。我们将电子邮件字段设置为'null'
$title(Employee.java)
public class Employee
{
    private Integer id;
    private String firstName;
    private String lastName;
    private String email;
}

2.1。不要序列化空字段

JSON输出中没有空值的默认Gson序列化。
$title(Main.java)
Employee employeeObj = new Employee(1, "Lokesh", "Gupta", null);
                 
Gson gson = new GsonBuilder()
        .setPrettyPrinting()
        .create();
 
System.out.println(gson.toJson(employeeObj));
运行输出结果为:
{
  "id": 1,
  "firstName": "Lokesh",
  "lastName": "Gupta"
}

2.2。序列化空字段

自定义Gson序列化,JSON输出中包含空值。
$title(Main.java)
Employee employeeObj = new Employee(1, "Lokesh", "Gupta", null);
                 
Gson gson = new GsonBuilder()
        .setPrettyPrinting()
        .serializeNulls()
        .create();
 
System.out.println(gson.toJson(employeeObj));
执行输出结果:
{
  "id": 1,
  "firstName": "Lokesh",
  "lastName": "Gupta",
  "emailId": null
}
显然,null字段在JSON输出中被序列化。
https://www.leftso.com/article/651.html

相关文章
前言在Gson中实现的默认行为是忽略空对象字段
前言学习使用Google GSON库将Java对象序列化为JSON表示形式,并将JSON字符串反序列化为等效的Java对象
前言在这个Gson @SerializedName示例中,学习在序列化和反序列化过程中更改json和java对象之间的字段名称
MySQL查询中null转0
spring boot项目运行单元测试失败,报错Could not load TestContextBootstrapper [null]. Specify @BootstrapWith's '...
Java编程之spring boot FastDFS Java client使用,Java编程,FastDFS Java客户端
问题描述idea启动maven的JavaFX项目报错:Exception in Application start method java.lang.reflect.InvocationTarg...
Java通过sourceafis比对指纹图片的相似度判断指纹,sourceafis,Java指纹图片
Java编程之Spring Cloud Hystrix Circuit熔断/断路
Java编程之Spring Boot通过JMSTemplate 整合ActiveMQ
java编程之java jwt token使用,autho0的Java-jwt框架使用,java编程,java-jwt
Java编程中spring boot项目如何获取spring容器applicationContext
出现问题的环境springboot2.7.xjdk1.8请求方式Post参数格式FormDatakv防止特点:值特别大(类似富文本标签啥的内容特别多)问题排除FormDatakey和Contro...
Vert.x java 入门,Vert.x这个框架在常规的web业务开发中估计还不是很成熟。但是了解了他的一些原理我觉得可以有一番作为。今天主要简单讲解下eclipse Vert.x是什么有什么...
引言    modbus tcp通讯Java的方案之前已经讲解过一种,modbus4j实现Java语言的modbus tcp协议通讯