1. Gson提供@Since注释来控制基于其各种版本的类的Json序列化/反序列化。考虑以下具有版本控制支持的类。在这个类中, 我们最初定义了一个name变量, 之后我们又添加了一个age新变量。使用@Since, 我们已经定义了版本1.0的name和版本1.1的age。@Since也可以添加到类上。
@Since(1.0)
private String name;
@Since(1.1)
private int age;
2. GsonBuilder提供了setVersion()方法来序列化这样的版本化类。
GsonBuilder builder = new GsonBuilder();
builder.setVersion(1.0);
Gson gson = builder.create();
3. 例子
3.1. 新建一个名为GsonSerializeNulls的Java项目, 同时添加相关jar包。
3.2. 新建Student.java
package com.fj.v;
import com.google.gson.annotations.Since;
public class Student {
@Since(1.0)
private String name;
@Since(1.1)
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "Student [name: " + name + ", age: " + age + "]";
}
}
3.3. 新建App.java
package com.fj.v;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class App {
public static void main(String[] args) {
// 创建一个学生对象
Student student = new Student("小明", 21);
Gson gson = new Gson();
String jsonString = gson.toJson(student);
System.out.println(jsonString);
// 1. Gson构造器
GsonBuilder builder = new GsonBuilder();
// 2. Gson版本支持
builder.setVersion(1.0);
// 3. 格式良好的输出
builder.setPrettyPrinting();
// 4. 创建Gson对象
gson = builder.create();
// 5. JavaBean转化为JSON字符串
jsonString = gson.toJson(student);
System.out.println(jsonString);
}
}
3.4. 运行项目