someName
json someOtherName
中的映射映射到Java类中。这是@SerializedName
注释有用的地方。FieldNamingPolicy
可能已使用GsonBuilder
该类的任何内容,包括默认字段命名策略。value
- 序列化或反序列化时字段的所需名称。alternate
- 反序列化时字段的替代名称。除了'value'属性之外,它还提供了更多可能的名称。如果有多个字段与一个属性匹配,Gson将使用最后处理的字段。请记住,
alternate
具有多个名称的选项仅限于反序列化。在序列化中,它不会产生任何影响。
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"
}
{
"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]
注意程序输出。我们有两个匹配的电子邮件领域即email
和emailAddress
。最后一次出现是for "emailAddress"
,所以它的值被填充到Employee对象中。
https://www.leftso.com/article/652.html