@Until एनोटेशन का उपयोग GsonBuilder क्लास के setVersion() मेथड के साथ किया जा सकता है। यह एनोटेशन जावा क्लास में फील्ड पर लागू किया जा सकता है और फ्लोट को आर्गुमेंट के रूप में स्वीकार करता है। यह आर्गुमेंट उस वर्जन नंबर को दर्शाता है जिसमें फील्ड सीरियलाइज्ड हुई है। @Until एनोटेशन वेब-सर्विसेज में JSON क्लासेज की वर्जनिंग को मैनेज कर सकता है।
सिंटैक्स
@Documented
@Retention(value=RUNTIME)
@Target(value={FIELD,TYPE})
public @interface Until
उदाहरण
import com.google.gson.annotations.Until;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonUntilAnnotationTest {
public static void main(String[] args) {
Employee emp = new Employee();
emp.setEmployeeName("Adithya");
emp.setEmployeeId(115);
emp.setEmployeeTechnology("Python");
emp.setEmploeeAddress("Pune");
System.out.println("Using version 0.5");
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.setPrettyPrinting().setVersion(0.5).create();
String jsonString = gson.toJson(emp);
System.out.println(jsonString);
System.out.println("Using version 1.0");
gsonBuilder = new GsonBuilder();
gson = gsonBuilder.setPrettyPrinting().setVersion(1.0).create();
jsonString = gson.toJson(emp);
System.out.println(jsonString);
System.out.println("Using version 1.1");
gsonBuilder = new GsonBuilder();
gson = gsonBuilder.setPrettyPrinting().setVersion(1.1).create();
jsonString = gson.toJson(emp);
System.out.println(jsonString);
}
}
// Employee क्लास
class Employee {
private String empName;
private int empId;
@Until(1.1)
private String empTech;
@Until(1.1)
private String empAddress;
// गेटर्स और सेटर्स...
public String getEmployeeName() { return empName; }
public void setEmployeeName(String empName) { this.empName = empName; }
public int getEmployeeId() { return empId; }
public void setEmployeeId(int empId) { this.empId = empId; }
public String getEmployeeTechnology() { return empTech; }
public void setEmployeeTechnology(String empTech) { this.empTech = empTech; }
public String getEmploeeAddress() { return empAddress; }
public void setEmploeeAddress(String empAddress) { this.empAddress = empAddress; }
}
आउटपुट
Using version 0.5
{
"empName": "Adithya",
"empId": 115,
"empTech": "Python",
"empAddress": "Pune"
}
Using version 1.0
{
"empName": "Adithya",
"empId": 115,
"empTech": "Python",
"empAddress": "Pune"
}
Using version 1.1
{
"empName": "Adithya",
"empId": 115
}
@Since vs @Until तुलना
| पहलू | @Since | @Until |
|---|---|---|
| अर्थ | इस वर्जन से शुरू करके शामिल करें | इस वर्जन तक शामिल करें (एक्सक्लूसिव) |
| वर्जन 1.0 पर @Since(1.0) | शामिल | - |
| वर्जन 1.0 पर @Until(1.0) | - | बहिष्कृत (1.0 < 1.0 गलत है) |
| उपयोग | नए फील्ड्स पेश करना | फील्ड्स को डिप्रीकेट/हटाना |
संयुक्त उपयोग
// वर्जन 1.0 से 2.0 तक उपलब्ध
@Since(1.0)
@Until(2.0)
private String activeField;
// वर्जन 2.0+ के लिए नया फील्ड
@Since(2.0)
private String newField;
// वर्जन 1.0 से पहले का फील्ड
@Until(1.0)
private String legacyField;
वर्जनिंग स्ट्रेटेजी
- सेमेंटिक वर्जनिंग: मेजर.माइनर.पैच (उदाहरण: 1.0.0, 2.1.3)
- Gson वर्जन: फ्लोट के रूप में सेट किया जाता है (1.0, 1.1, 2.0)
- कंसिस्टेंसी: पूरे एप्लिकेशन में सुसंगत वर्जनिंग स्कीम का उपयोग करें
नोट
@Until वर्जन एक्सक्लूसिव है - फील्ड निर्दिष्ट वर्जन से कम वर्जन पर शामिल होता है, उस वर्जन पर या उससे ऊपर नहीं।