Gson 序列化NULL值

编程教程 > Java (2618) 2024-11-26 14:39:04

前言

在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输出中被序列化。

评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
前言在Gson中实现的默认行为是忽略空对象字段
前言在这个Gson @SerializedName示例中,学习在序列化和反序列化过程中更改json和java对象之间的字段名称
前言学习使用Google GSON库将Java对象序列化为JSON表示形式,并将JSON字符串反序列化为等效的Java对象
       学习使用Gson JsonReader类,这是一个基于拉的流式JSON解析器,它有助于将JSON作为标记流来读取​GSON1. JsonReader是什么JsonReader是流式...
MySQL查询中null转0
前言值得一提的是JSON只有数组数据类型
spring boot项目运行单元测试失败,报错Could not load TestContextBootstrapper [null]. Specify @BootstrapWith's '...
问题描述idea启动maven的JavaFX项目报错:Exception in Application start method java.lang.reflect.InvocationTarg...
Java编程之Spring Cloud Hystrix Circuit熔断/断路
Java编程之spring boot FastDFS Java client使用,Java编程,FastDFS Java客户端
Vert.x java 入门,Vert.x这个框架在常规的web业务开发中估计还不是很成熟。但是了解了他的一些原理我觉得可以有一番作为。今天主要简单讲解下eclipse Vert.x是什么有什么...
解法一:只适合单线程环境(不建议)public class Singleton { private static Singleton instance=null
问题描述JavaFX maven项目在idea中启动报错:Exception in thread "WindowsNativeRunloopThread" java.lang.NoSuchMet...
出现问题的环境springboot2.7.xjdk1.8请求方式Post参数格式FormDatakv防止特点:值特别大(类似富文本标签啥的内容特别多)问题排除FormDatakey和Contro...
问题描述最近写JavaFX程序遇到了下面的错误:Exception in thread "pool-2-thread-1" java.lang.IllegalStateException: No...