Gson @SerializedName注解使用说明

位置:首页>文章>详情   分类: 教程分享 > Java教程   阅读(1601)   2023-03-28 11:29:14

前言

在这个Gson @SerializedName示例中,学习在序列化和反序列过程中更改json和java对象之间的字段名称。
GSON

1. @SerializedName

默认情况下,我们假设Java模型类和JSON将完全相同的字段名称。但有时情况并非如此,某些名称也有所不同。现在我们必须将someNamejson someOtherName中的映射映射到Java类中。这是@SerializedName注释有用的地方。
@SerializedName注释指示应将带注释的成员序列化为JSON,并将提供的名称值作为其字段名称。此批注将覆盖FieldNamingPolicy可能已使用GsonBuilder该类的任何内容,包括默认字段命名策略。
请注意,您在此批注中指定的值必须是有效的JSON字段名称。

1.1。注释属性

它接受两个属性:
  • value - 序列化或反序列化时字段的所需名称。
  • alternate - 反序列化时字段的替代名称。除了'value'属性之外,它还提供了更多可能的名称。如果有多个字段与一个属性匹配,Gson将使用最后处理的字段。

请记住,alternate具有多个名称的选项仅限于反序列化。在序列化中,它不会产生任何影响。

2.在序列化期间更改字段名称

让我们举一个Employee只有4个字段的类的例子。我们想创建JSON,其中"email"写为字段名称"emailId"
$title(Employee.java)
public class Employee
{
    private Integer id;
    private String firstName;
    private String lastName;
 
    @SerializedName(value = "emailId", alternate = "emailAddress")
    private String email;
}
让我们序列化一个员工记录并查看JSON输出。
$title(Main.java)
Employee emp = new Employee(1001, "Lokesh", "Gupta", "howtodoinjava@gmail.com");
 
Gson gson = new GsonBuilder().setPrettyPrinting().create(); 
 
System.out.println(gson.toJson(emp));
执行输出:
{
  "id": 1001,
  "firstName": "Lokesh",
  "lastName": "Gupta",
  "emailId": "howtodoinjava@gmail.com"
}

3.在反序列化期间更改字段名称

在将JSON反序列化到Java类期间映射不同字段名称的Java程序。
{
  "id": 1001,
  "firstName": "Lokesh",
  "lastName": "Gupta",
  "email": "howtodoinjava@gmail.com",
  "emailAddress": "admin@gmail.com"
}
$title(Main.java)
String json = "{'id': 1001,"
        + "'firstName': 'Lokesh',"
        + "'lastName': 'Gupta',"
        + "'email': 'howtodoinjava@gmail.com',"
        + "'emailAddress': 'admin@gmail.com'}";
         
Gson gson = new GsonBuilder().setPrettyPrinting().create();
 
Employee emp = gson.fromJson(json, Employee.class);
 
System.out.println(emp);
执行输出:
Employee [id=1001, firstName=Lokesh, lastName=Gupta, email=admin@gmail.com]
注意程序输出。我们有两个匹配的电子邮件领域即emailemailAddress。最后一次出现是for "emailAddress",所以它的值被填充到Employee对象中。
标签: GSON Java
地址:https://www.leftso.com/article/652.html

相关阅读

前言学习使用Google GSON库将Java对象序列化为JSON表示形式,并将JSON字符串反序列化为等效的Java对象
前言在这个Gson @SerializedName示例中,学习在序列化和反序列化过程中更改json和java对象之间的字段名称
前言在Gson中实现的默认行为是忽略空对象字段
       学习使用Gson JsonReader类,这是一个基于拉的流式JSON解析器,它有助于将JSON作为标记流来读取​GSON1. JsonReader是什么JsonReader是流式...
前言值得一提的是JSON只有数组数据类型
Java通过sourceafis比对指纹图片的相似度判断指纹,sourceafis,Java指纹图片
备受期待的Java Enterprise Edition 8发布了两个令人兴奋的新API(JSON-Binding 1.0和Java EE Security 1.0)并改进了当前的API(JAX...
前言       在本教程中,我们将了解Retrofit 的基础知识以和创建一个android HTTP client请求REST API
Java编程之spring boot FastDFS Java client使用,Java编程,FastDFS Java客户端
Java编程之java static关键字,Java编程,static关键字