ไลบรารี Gson ให้ Versioning System เรียบง่ายสำหรับ Java Objects ที่อ่าน/เขียน มี Annotation @Since สำหรับ Versioning Concept @Since(versionNumber)
สร้าง Gson Instance พร้อม Versioning ด้วย GsonBuilder().setVersion() หากตั้ง setVersion(2.0) หมายถึง Field ที่ Version 2.0 หรือน้อยกว่า จะถูก Parse/Serialize
Syntax
public GsonBuilder setVersion(double ignoreVersionsAfter)
ตัวอย่าง: Versioning Support
import com.google.gson.*;
import com.google.gson.annotations.*;
public class VersionSupportTest {
public static void main(String[] args) {
Person person = new Person();
person.firstName = "Raja";
person.lastName = "Ramesh";
// Version 1.0 - เฉพาะ Field @Since(1.0)
Gson gson1 = new GsonBuilder().setVersion(1.0).setPrettyPrinting().create();
System.out.println("Version 1.0:");
System.out.println(gson1.toJson(person));
// Version 2.0 - Field @Since(1.0) และ @Since(2.0)
Gson gson2 = new GsonBuilder().setVersion(2.0).setPrettyPrinting().create();
System.out.println("Version 2.0:");
System.out.println(gson2.toJson(person));
}
}
// Person class
class Person {
@Since(1.0)
public String firstName;
@Since(2.0)
public String lastName;
}
ผลลัพธ์
Version 1.0:
{ "firstName": "Raja" }
Version 2.0:
{ "firstName": "Raja", "lastName": "Ramesh" }
Use Case: API Versioning - Client Version เก่าจะได้ Field น้อยกว่า Client Version ใหม่ ไม่ต้องสร้าง DTO แยก Version