@JsonAlias Jackson-এর একটি অ্যানোটেশন যা JSON ডেটা প্রক্রিয়াকরণের সময় একটি ফিল্ডের জন্য একাধিক নাম অনুমোদন করে। এটি বিশেষভাবে উপকারী যখন JSON থেকে ডেটা Deserialization করতে হয় এবং JSON ফিল্ডের নাম পরিবর্তন হতে পারে, তবে আপনি এখনও ঐ ফিল্ডটির জন্য একাধিক নাম সাপোর্ট করতে চান।
@JsonAlias ব্যবহার করে JSON ফিল্ডের জন্য বিকল্প (alias) নাম দেওয়া যায়। এটি Jackson-কে নির্দেশ দেয় যে, ঐ ফিল্ডের জন্য একাধিক নাম প্রযোজ্য হতে পারে।
@JsonAlias এর বৈশিষ্ট্য
- Multiple Field Names:
- JSON ডেটার মধ্যে একাধিক নামের জন্য একই Java ফিল্ড ম্যাপ করতে পারে।
- Backward Compatibility:
- যখন JSON ফরম্যাট পরিবর্তন হয়, তখন পূর্বের নামগুলোও সঠিকভাবে মান্য হয়।
- Multiple Aliases:
- একটি ফিল্ডের জন্য একাধিক বিকল্প নাম (alias) ব্যবহার করতে পারে।
@JsonAlias এর ব্যবহার
১. একাধিক নামের জন্য একটি ফিল্ড ম্যাপ করা
import com.fasterxml.jackson.annotation.JsonAlias;
public class User {
@JsonAlias({"user_id", "id"})
private int id;
private String name;
// Getters and Setters
}
Deserialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonAliasExample {
public static void main(String[] args) throws Exception {
String json = "{\"user_id\":1, \"name\":\"Rahim\"}";
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);
System.out.println("User ID: " + user.getId());
System.out.println("User Name: " + user.getName());
}
}
Output:
User ID: 1
User Name: Rahim
ব্যাখ্যা:
- এখানে
user_idএবংidউভয়ইidফিল্ডের জন্য বিকল্প নাম হিসেবে কাজ করে। JSON থেকে একটির মাধ্যমে ডেটা আসলেও, Jackson সেগুলোকে একসাথে মান্য করবে।
@JsonAlias এর সুবিধা
- Backward Compatibility:
- পুরোনো JSON ফরম্যাটে থাকা ফিল্ড নামগুলোর জন্য সহায়তা নিশ্চিত করতে ব্যবহার করা হয়।
- API Evolution:
- যখন API এ নতুন ফিল্ড নাম যুক্ত হয়, তখন পুরোনো ফিল্ড নামও সমর্থন করতে সাহায্য করে।
- Multiple Source Formats:
- বিভিন্ন JSON ফরম্যাটের ক্ষেত্রে (যেমন: External API থেকে আসা JSON) একাধিক নামের জন্য একই Java ফিল্ড ম্যাপ করার জন্য ব্যবহৃত হয়।
@JsonAlias এর সীমাবদ্ধতা
- Serialization:
@JsonAliasশুধুমাত্র Deserialization প্রক্রিয়ায় কাজ করে। এটি Serialization (Java Object থেকে JSON) সময়ে ফিল্ড নাম কাস্টমাইজ করার জন্য ব্যবহৃত হয় না।
উদাহরণ: একাধিক নামের জন্য একাধিক @JsonAlias ব্যবহার
import com.fasterxml.jackson.annotation.JsonAlias;
public class Product {
@JsonAlias({"product_id", "productId", "id"})
private int id;
private String name;
// Getters and Setters
}
Deserialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonAliasProductExample {
public static void main(String[] args) throws Exception {
String json = "{\"product_id\":101, \"name\":\"Laptop\"}";
ObjectMapper mapper = new ObjectMapper();
Product product = mapper.readValue(json, Product.class);
System.out.println("Product ID: " + product.getId());
System.out.println("Product Name: " + product.getName());
}
}
Output:
Product ID: 101
Product Name: Laptop
@JsonAlias vs @JsonProperty
| বৈশিষ্ট্য | @JsonAlias | @JsonProperty |
|---|---|---|
| প্রধান উদ্দেশ্য | একাধিক বিকল্প নামের জন্য একটি ফিল্ড ম্যাপ করা। | একটি Java ফিল্ডের জন্য নির্দিষ্ট JSON নাম নির্ধারণ করা। |
| ব্যবহার | ফিল্ডের জন্য একাধিক JSON নাম সাপোর্ট করতে। | নির্দিষ্ট JSON ফিল্ড নাম কাস্টমাইজ করতে। |
| Serialization | শুধুমাত্র Deserialization এ কাজ করে। | Serialization এবং Deserialization উভয়ের জন্য কাজ করে। |
@JsonAliasহল Jackson এর একটি শক্তিশালী অ্যানোটেশন যা JSON ফিল্ডের একাধিক নামের জন্য একটি Java ফিল্ড ম্যাপ করতে সাহায্য করে।- এটি Backward Compatibility এবং API Evolution-এর জন্য খুবই উপকারী, যেখানে JSON ফরম্যাট পরিবর্তন হয়, কিন্তু পুরনো নামগুলোকে সমর্থন রাখা হয়।
- এটি Deserialization প্রক্রিয়ায় কার্যকর, কিন্তু Serialization প্রক্রিয়ায় কাজ করে না।
@JsonAlias Jackson-এর একটি অ্যানোটেশন, যা একটি ফিল্ডের জন্য একাধিক JSON ফিল্ড নাম ম্যানেজ করতে ব্যবহৃত হয়। এটি JSON-এ যদি একাধিক নাম থেকে একটি Java ফিল্ড মাপ করতে চান, তখন এই অ্যানোটেশন ব্যবহার করা হয়। এটি মূলত Deserialization-এ কার্যকরী, যেখানে একাধিক নাম থেকে একটি ফিল্ড মান পাওয়া যায়।
@JsonAlias এর বৈশিষ্ট্য
- Multiple Aliases: একটি ফিল্ডের জন্য একাধিক নাম সমর্থন করতে সক্ষম।
- Deserialization: JSON থেকে Java Object তৈরি করার সময় এটি কাজ করে, অর্থাৎ একাধিক JSON ফিল্ড নাম একটি Java ফিল্ডে মান ম্যাপ করতে ব্যবহার হয়।
- Backward Compatibility: বিভিন্ন সময় বা সংস্করণে পরিবর্তিত ফিল্ড নাম সাপোর্ট করতে এটি সাহায্য করে।
@JsonAlias ব্যবহার করার উদাহরণ
1. Multiple JSON Field Names for the Same Java Field
যখন একটি Java ফিল্ডের জন্য বিভিন্ন JSON ফিল্ড নাম থাকে, তখন @JsonAlias ব্যবহার করা হয়।
Java Class Example:
import com.fasterxml.jackson.annotation.JsonAlias;
public class User {
@JsonAlias({"user_id", "id", "userID"})
private int id;
private String name;
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Deserialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonAliasExample {
public static void main(String[] args) throws Exception {
String json = "{\"user_id\":1, \"name\":\"Rahim\"}";
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);
System.out.println("User ID: " + user.getId());
System.out.println("User Name: " + user.getName());
}
}
JSON Input Example:
{
"user_id": 1,
"name": "Rahim"
}
Output:
User ID: 1
User Name: Rahim
এখানে, @JsonAlias({"user_id", "id", "userID"}) ব্যবহার করা হয়েছে, যার ফলে user_id, id, এবং userID JSON ফিল্ড নামগুলো Java id ফিল্ডের সাথে ম্যাপ হবে। আপনি যেকোনো এক নাম ব্যবহার করে JSON ডেটা পাঠাতে পারেন এবং সেটি সঠিকভাবে Java ফিল্ডে মাপ হবে।
@JsonAlias এর উপকারিতা
- Multiple Field Names Support:
- একাধিক নামের জন্য একটি ফিল্ড ম্যাপ করা যায়, যেমন যদি API-তে কয়েকটি ভিন্ন সংস্করণে একাধিক নাম ব্যবহৃত হয়ে থাকে।
- Backward Compatibility:
- যখন API সংস্করণের মধ্যে JSON ফিল্ড নাম পরিবর্তন হয়, তখন আগের নামের সাথে নতুন নাম ম্যাপ করার জন্য
@JsonAliasব্যবহার করা যায়।
- যখন API সংস্করণের মধ্যে JSON ফিল্ড নাম পরিবর্তন হয়, তখন আগের নামের সাথে নতুন নাম ম্যাপ করার জন্য
- Ease of Integration:
- বিভিন্ন JSON নাম থেকে একটি ফিল্ডের মান সংগ্রহ করে, কোডে অতিরিক্ত পরিবর্তন ছাড়াই বিভিন্ন ফরম্যাটের JSON-এর সাথে কাজ করা যায়।
@JsonAlias ব্যবহারের অন্যান্য উদাহরণ
2. Multiple Aliases for a Field
import com.fasterxml.jackson.annotation.JsonAlias;
public class Employee {
@JsonAlias({"emp_id", "employee_id"})
private int id;
private String name;
// Getters and Setters
}
Deserialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonAliasExample {
public static void main(String[] args) throws Exception {
String json = "{\"emp_id\": 101, \"name\":\"John Doe\"}";
ObjectMapper mapper = new ObjectMapper();
Employee employee = mapper.readValue(json, Employee.class);
System.out.println("Employee ID: " + employee.getId());
System.out.println("Employee Name: " + employee.getName());
}
}
JSON Input Example:
{
"emp_id": 101,
"name": "John Doe"
}
Output:
Employee ID: 101
Employee Name: John Doe
@JsonAlias এবং @JsonProperty এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | @JsonAlias | @JsonProperty |
|---|---|---|
| প্রয়োগের উদ্দেশ্য | একাধিক JSON ফিল্ড নাম একটি Java ফিল্ডে মাপ করার জন্য | JSON ফিল্ডের নাম নির্ধারণ এবং প্রয়োজনীয়তা নিশ্চিত করার জন্য |
| বিভিন্ন নাম সাপোর্ট | একাধিক নামের জন্য সমর্থন | একক নাম নির্ধারণ করে। |
| Serialization | @JsonAlias শুধুমাত্র Deserialization-এর জন্য ব্যবহৃত | @JsonProperty Serialization এবং Deserialization উভয়ের জন্য ব্যবহৃত |
| Backward Compatibility | একাধিক সংস্করণের JSON ফিল্ড নাম সাপোর্ট করতে সাহায্য করে | ফিল্ড নাম কাস্টমাইজ করতে সাহায্য করে। |
@JsonAliasহল একটি শক্তিশালী টুল যা JSON ফিল্ডের একাধিক নামকে এক Java ফিল্ডের সাথে ম্যাপ করতে সহায়তা করে।- এটি Backward Compatibility এবং Multiple Field Name Support নিশ্চিত করতে ব্যবহৃত হয়।
- JSON API Evolution-এর ক্ষেত্রে, যখন ফিল্ড নাম পরিবর্তিত হয়, তখন
@JsonAliasব্যবহার করে আপনি আগের নামের সাথে নতুন নাম ম্যাপ করতে পারেন, যার ফলে কোডে কম পরিবর্তন করতে হয়।
@JsonAlias Jackson এর JSON Deserialization এর জন্য একটি খুবই কার্যকরী অ্যানোটেশন, যা একাধিক JSON ফিল্ড নাম একটি Java ফিল্ডের সাথে মাপ করার জন্য ব্যবহৃত হয়।
Jackson এর মাধ্যমে JSON প্রপার্টি নাম কাস্টমাইজ করা সম্ভব এবং কখনও কখনও একাধিক নাম ব্যবহার করা প্রয়োজন হতে পারে। উদাহরণস্বরূপ, যদি JSON-এর একটি প্রপার্টি একটি নির্দিষ্ট নাম ব্যবহার করে, কিন্তু Java ক্লাসে অন্য নাম ব্যবহার করা হয়, অথবা যদি একই প্রপার্টির জন্য একাধিক নাম সমর্থন করতে হয়, তখন alternate names ব্যবহার করা প্রয়োজন।
Jackson-এ @JsonProperty এবং @JsonAlias অ্যানোটেশন ব্যবহার করে আপনি JSON properties এর জন্য alternate names নির্ধারণ করতে পারেন।
1. @JsonProperty এর মাধ্যমে Alternate Names
Jackson-এর @JsonProperty অ্যানোটেশন ব্যবহার করে আপনি JSON প্রপার্টির নাম কাস্টমাইজ করতে পারেন। পাশাপাশি, একটি ফিল্ডের জন্য একাধিক নাম বা alternative names ব্যবহার করতে পারেন, তবে এর জন্য @JsonAlias অ্যানোটেশন ব্যবহৃত হয়।
2. @JsonAlias অ্যানোটেশন
@JsonAlias অ্যানোটেশনটি Jackson 2.12 এ যোগ করা হয়েছে এবং এটি একাধিক নামকে একই প্রপার্টির জন্য সমর্থন করতে ব্যবহৃত হয়। এর সাহায্যে, আপনি JSON-এ একাধিক ফিল্ড নামের বিকল্প নাম যুক্ত করতে পারেন, যাতে ঐ ফিল্ডটি একাধিক নাম থেকে মান গ্রহণ করতে পারে।
@JsonAlias ব্যবহার করার উদাহরণ
উদাহরণ 1: একাধিক alternate names এর জন্য
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
public class User {
@JsonProperty("user_id")
private int id;
@JsonAlias({"full_name", "username"})
private String name;
@JsonProperty("email_address")
private String email;
// Constructors
public User() {}
public User(int id, String name, String email) {
this.id = id;
this.name = name;
this.email = email;
}
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Serialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonAliasExample {
public static void main(String[] args) throws Exception {
String json = "{\"full_name\":\"Rahim\", \"user_id\":1, \"email_address\":\"rahim@example.com\"}";
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);
System.out.println("User ID: " + user.getId());
System.out.println("User Name: " + user.getName());
System.out.println("User Email: " + user.getEmail());
}
}
JSON Input:
{
"full_name": "Rahim",
"user_id": 1,
"email_address": "rahim@example.com"
}
Output:
User ID: 1
User Name: Rahim
User Email: rahim@example.com
এখানে, full_name এবং username উভয়ই name ফিল্ডে মান প্রদান করতে সক্ষম। এটি alternate names সমর্থন করছে।
3. @JsonProperty এবং @JsonAlias একত্রে ব্যবহার
যদি আপনি একটি JSON প্রপার্টির জন্য একটি কাস্টম নাম এবং একটি বা তার বেশি alternate names ব্যবহার করতে চান, তবে আপনি @JsonProperty এবং @JsonAlias একসাথে ব্যবহার করতে পারেন।
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
public class Employee {
@JsonProperty("employee_id")
private int id;
@JsonAlias({"first_name", "fname"})
private String firstName;
@JsonAlias({"last_name", "lname"})
private String lastName;
// Constructors
public Employee() {}
public Employee(int id, String firstName, String lastName) {
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
}
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
Serialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonAliasEmployeeExample {
public static void main(String[] args) throws Exception {
String json = "{\"first_name\":\"Rahim\", \"lname\":\"Khan\", \"employee_id\":101}";
ObjectMapper mapper = new ObjectMapper();
Employee employee = mapper.readValue(json, Employee.class);
System.out.println("Employee ID: " + employee.getId());
System.out.println("Employee First Name: " + employee.getFirstName());
System.out.println("Employee Last Name: " + employee.getLastName());
}
}
JSON Input:
{
"first_name": "Rahim",
"lname": "Khan",
"employee_id": 101
}
Output:
Employee ID: 101
Employee First Name: Rahim
Employee Last Name: Khan
এখানে, first_name এবং fname দুটোই firstName ফিল্ডে মান প্রদান করতে সক্ষম। একইভাবে, last_name এবং lname দুটোই lastName ফিল্ডে মান প্রদান করতে সক্ষম।
@JsonAlias ব্যবহার করার সুবিধা
- Multiple Field Names Support:
- JSON ফাইলের বিভিন্ন নাম থেকে একাধিক মান পড়ার জন্য সহায়ক।
- Backward Compatibility:
- যদি API-এর নাম পরিবর্তিত হয় তবে নতুন নামের পাশাপাশি পুরনো নামও সমর্থন করতে পারেন।
- Flexibility:
- Jackson এর মাধ্যমে একাধিক নাম ম্যানেজ করা সহজ হয়ে যায়, বিশেষত যখন JSON ফরম্যাটে পরিবর্তন আসে।
- Improved Data Mapping:
- একাধিক JSON ফিল্ড নাম থেকে মান মেলে ফেলা সহজ হয়, যেহেতু ফিল্ড নামগুলি ভিন্ন হতে পারে।
@JsonAliasএকটি শক্তিশালী টুল যা JSON এর জন্য একাধিক বিকল্প নাম (alternate names) সমর্থন করতে সক্ষম।@JsonPropertyএবং@JsonAliasব্যবহার করে JSON প্রপার্টির জন্য একাধিক নাম সংজ্ঞায়িত করা যায়, যা ডিজাইন পরিবর্তন বা ব্যাকওয়ার্ড কমপ্যাটিবিলিটি নিশ্চিত করে।- Jackson ব্যবহার করে আপনি JSON ফরম্যাটে উন্নত কাস্টমাইজেশন এবং ফিল্ড ম্যানেজমেন্ট করতে পারবেন।
এটি আপনার Java অ্যাপ্লিকেশন এবং API ডেভেলপমেন্টে JSON ফিল্ড ম্যানেজমেন্ট আরও সহজ এবং কার্যকর করে তোলে।
@JsonAlias Jackson এর একটি অ্যানোটেশন যা Deserialization প্রক্রিয়ার সময় JSON ফিল্ড নামের বিকল্প নাম বা alias নির্ধারণ করতে ব্যবহৃত হয়। এটি বিশেষত তখন প্রয়োজন যখন JSON ফাইলের মধ্যে একটি ফিল্ডের একাধিক সম্ভাব্য নাম থাকে।
@JsonAlias ব্যবহার করে আপনি একাধিক ফিল্ড নাম থেকে একটি নামের জন্য Deserialization করতে পারেন, যা আপনার Java Object-এর সঙ্গে ম্যাচ করে।
@JsonAlias এর মূল বৈশিষ্ট্য
- Multiple Field Names: একই Java ফিল্ডের জন্য একাধিক সম্ভাব্য JSON ফিল্ড নাম।
- Backward Compatibility: পুরনো এবং নতুন JSON ফরম্যাটে একসঙ্গে কাজ করার জন্য।
- Graceful Handling: JSON ফাইলের বিভিন্ন ভেরিয়েন্ট থেকে ডেটা একত্রিত করতে সাহায্য করে।
@JsonAlias এর ব্যবহার
1. একাধিক JSON ফিল্ড নাম
যদি আপনার Java ক্লাসে এমন ফিল্ড থাকে যার জন্য JSON এ একাধিক নাম থাকতে পারে, তাহলে আপনি @JsonAlias ব্যবহার করতে পারেন।
কোড উদাহরণ:
import com.fasterxml.jackson.annotation.JsonAlias;
public class User {
@JsonAlias({"user_id", "id"})
private int id;
@JsonAlias({"user_name", "name"})
private String name;
// Getters and Setters
}
Deserialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonAliasExample {
public static void main(String[] args) throws Exception {
String json = "{\"user_id\":1,\"user_name\":\"Rahim\"}"; // alias ব্যবহার করা হয়েছে
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);
System.out.println("ID: " + user.getId());
System.out.println("Name: " + user.getName());
}
}
JSON Output:
ID: 1
Name: Rahim
এখানে user_id এবং id JSON ফিল্ডের নামগুলিকে একই id Java ফিল্ডের সঙ্গে মেপ করা হয়েছে, এবং একইভাবে user_name এবং name JSON ফিল্ডের নামগুলিকে name Java ফিল্ডের সঙ্গে মেপ করা হয়েছে।
@JsonAlias এবং Backward Compatibility
কখনো কখনো আপনার API বা JSON ফরম্যাটের নাম পরিবর্তন করতে হতে পারে। কিন্তু আপনি চাইবেন যাতে আগের JSON ফরম্যাটও সঠিকভাবে ডেসিরিয়ালাইজড হয়। এই ক্ষেত্রে @JsonAlias সহকারে পুরনো এবং নতুন নাম একই ফিল্ডে ম্যাপ করা সম্ভব।
কোড উদাহরণ:
import com.fasterxml.jackson.annotation.JsonAlias;
public class Product {
@JsonAlias({"product_id", "prod_id"})
private int id;
@JsonAlias({"product_name", "name"})
private String name;
// Getters and Setters
}
Deserialization Example (পুরানো এবং নতুন নাম সমর্থন করবে):
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonAliasExample {
public static void main(String[] args) throws Exception {
String oldJson = "{\"prod_id\":1001,\"product_name\":\"Laptop\"}"; // পুরনো নাম
String newJson = "{\"product_id\":1001,\"product_name\":\"Laptop\"}"; // নতুন নাম
ObjectMapper mapper = new ObjectMapper();
// পুরনো নাম দিয়ে Deserialization
Product oldProduct = mapper.readValue(oldJson, Product.class);
System.out.println("Old JSON - ID: " + oldProduct.getId() + ", Name: " + oldProduct.getName());
// নতুন নাম দিয়ে Deserialization
Product newProduct = mapper.readValue(newJson, Product.class);
System.out.println("New JSON - ID: " + newProduct.getId() + ", Name: " + newProduct.getName());
}
}
Output:
Old JSON - ID: 1001, Name: Laptop
New JSON - ID: 1001, Name: Laptop
এখানে পুরনো এবং নতুন JSON ফরম্যাট উভয়ের জন্য একই ফিল্ড নাম id এবং name Java ক্লাসে মেপ করা হয়েছে, এবং উভয়ই সফলভাবে ডেসিরিয়ালাইজড হয়েছে।
@JsonAlias এর অন্যান্য বৈশিষ্ট্য
- Multiple Aliases:
- একাধিক alias ব্যবহার করা যায়, যেমন:
@JsonAlias({"user_id", "id", "userIdentifier"}).
- একাধিক alias ব্যবহার করা যায়, যেমন:
- Compatibility with
@JsonProperty:@JsonAlias@JsonPropertyএর সঙ্গে একত্রে ব্যবহার করা যেতে পারে। যেখানে@JsonPropertyমূল JSON ফিল্ড নাম এবং@JsonAliasবিকল্প নামের জন্য ব্যবহার করা হয়।
উদাহরণ:
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
public class User {
@JsonProperty("user_id")
@JsonAlias({"user_id", "id", "userIdentifier"})
private int id;
@JsonProperty("user_name")
@JsonAlias({"user_name", "name"})
private String name;
// Getters and Setters
}
@JsonAlias এবং List বা Array-এর জন্য
@JsonAlias ব্যবহার করে Array বা List-এর জন্যও একাধিক নামের মেলবন্ধন করা সম্ভব।
উদাহরণ:
import com.fasterxml.jackson.annotation.JsonAlias;
import java.util.List;
public class Group {
@JsonAlias({"group_members", "members"})
private List<String> members;
// Getter and Setter
}
Deserialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Arrays;
public class JsonAliasListExample {
public static void main(String[] args) throws Exception {
String json = "{\"group_members\":[\"John\", \"Jane\", \"Bob\"]}"; // alias ব্যবহার করা হয়েছে
ObjectMapper mapper = new ObjectMapper();
Group group = mapper.readValue(json, Group.class);
System.out.println("Group Members: " + group.getMembers());
}
}
JSON Output:
Group Members: [John, Jane, Bob]
@JsonAliasঅ্যানোটেশনটি JSON ফিল্ডের একাধিক নামের জন্য কাস্টম Mapping করার জন্য ব্যবহৃত হয়, যা Deserialization এর সময় JSON থেকে Java Object-এ ডেটা ম্যাপ করতে সহায়তা করে।- Backward Compatibility নিশ্চিত করার জন্য এটি খুবই কার্যকর, যেমন: একাধিক নামের মাধ্যমে আগের এবং নতুন ফরম্যাটের JSON ডেটা একইভাবে প্রসেস করা।
- এটি আপনাকে JSON ফাইলের বিভিন্ন সংস্করণের সমর্থন করতে এবং একই Java ক্লাসে JSON ফিল্ডগুলির নামের মধ্যে ভিন্নতা মোকাবেলা করতে সাহায্য করে।
@JsonAlias হল একটি শক্তিশালী টুল, যা JSON ফরম্যাটের নমনীয়তা এবং সামঞ্জস্যতা নিশ্চিত করে, বিশেষত যখন API পরিবর্তন বা আপগ্রেড করা হয়।
@JsonAlias Jackson-এর একটি শক্তিশালী অ্যানোটেশন, যা একটি বা একাধিক JSON ফিল্ড নামের জন্য অ্যালিয়াস নির্ধারণ করতে ব্যবহৃত হয়। এটি বিশেষভাবে তখন কাজে আসে যখন আপনার JSON ডেটাতে বিভিন্ন নামের বিকল্প থাকতে পারে, এবং আপনি এই বিকল্প নামগুলির সাথে মানগুলি ম্যাপ করতে চান।
@JsonAlias ব্যবহার করে আপনি JSON ডেটা থেকে একটি বা একাধিক নামের সাথে ফিল্ডগুলিকে ম্যানিপুলেট করতে পারেন।
@JsonAlias এর বৈশিষ্ট্য
- Multiple Aliases: একাধিক বিকল্প নাম বা আলিয়াস ব্যবহার করতে সক্ষম।
- Graceful Deserialization: একাধিক নামের মধ্যে কোন একটি ব্যবহার করে ডেটা ডেসিরিয়ালাইজ করা সম্ভব।
- Backward Compatibility: পুরোনো এবং নতুন নামগুলির মধ্যে সঙ্গতি রাখা সম্ভব, যেমন API-এর ভিন্ন সংস্করণগুলির মধ্যে।
@JsonAlias এর ব্যবহার
উদাহরণ 1: একাধিক আলিয়াস ব্যবহার করা
ধরা যাক, আপনার একটি User ক্লাস আছে যেখানে id এবং user_id দুটি আলিয়াসের মাধ্যমে একই মান রাখা হবে।
import com.fasterxml.jackson.annotation.JsonAlias;
public class User {
@JsonAlias({"id", "user_id"})
private int userId;
private String name;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Deserialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonAliasExample {
public static void main(String[] args) throws Exception {
String json = "{\"id\": 1, \"name\": \"Rahim\"}"; // Using "id" as alias
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);
System.out.println("User ID: " + user.getUserId());
System.out.println("User Name: " + user.getName());
}
}
JSON Output:
{
"id": 1,
"name": "Rahim"
}
Explanation:
@JsonAlias({"id", "user_id"}): এখানেidএবংuser_idদুটি আলিয়াস হিসেবে ব্যবহার করা হয়েছে, যাuserIdফিল্ডের মানে ম্যাপ হবে।- যখন JSON ফাইলটি
"id": 1অথবা"user_id": 1পাঠাবে,userIdফিল্ডে একই মান (১) আসবে।
উদাহরণ 2: একাধিক আলিয়াসের মাধ্যমে ফিল্ড কাস্টমাইজ করা
ধরা যাক, আপনি একটি Product ক্লাস তৈরি করেছেন যেখানে কিছু আলিয়াস ব্যবহার করা হয়েছে:
import com.fasterxml.jackson.annotation.JsonAlias;
public class Product {
@JsonAlias({"product_id", "id", "prod_id"})
private int productId;
private String name;
private double price;
// Getters and Setters
}
Deserialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class ProductExample {
public static void main(String[] args) throws Exception {
String json = "{\"product_id\": 101, \"name\": \"Laptop\", \"price\": 500.00}";
ObjectMapper mapper = new ObjectMapper();
Product product = mapper.readValue(json, Product.class);
System.out.println("Product ID: " + product.getProductId());
System.out.println("Product Name: " + product.getName());
System.out.println("Product Price: " + product.getPrice());
}
}
JSON Output:
{
"product_id": 101,
"name": "Laptop",
"price": 500.0
}
Explanation:
@JsonAlias({"product_id", "id", "prod_id"}): একাধিক আলিয়াস দিয়েproductIdফিল্ডে ডেটা ম্যাপ করা হয়েছে। JSON ফাইলেproduct_id,id, বাprod_idযে কোন নাম ব্যবহার করা যাবে।
@JsonAlias কেন ব্যবহার করবেন?
- Backward Compatibility: পুরোনো এবং নতুন নামের মধ্যে সঙ্গতি রাখা সহজ।
- Multiple JSON Naming Conventions: যখন JSON ডেটার জন্য একাধিক নাম থাকতে পারে (যেমন, API সংস্করণের কারণে), তখন
@JsonAliasব্যবহার করে একাধিক নামকে এক ফিল্ডে ম্যাপ করা সহজ। - Flexible Deserialization: JSON নামের বিভিন্ন ফরম্যাটের জন্য একটি একক Java ফিল্ড ব্যবহার করা সম্ভব হয়।
@JsonAlias এবং @JsonProperty তুলনা
| বৈশিষ্ট্য | @JsonAlias | @JsonProperty |
|---|---|---|
| ফোকাস | একাধিক আলিয়াস ব্যবহার করা | JSON ফিল্ড নাম নির্ধারণ করা |
| ব্যবহার | JSON ফিল্ডের একাধিক নামের জন্য | নির্দিষ্ট JSON ফিল্ড নাম কাস্টমাইজ করতে |
| Deserialization | একাধিক JSON নাম থেকে ডেটা নেওয়া যায় | নির্দিষ্ট নাম ব্যবহার করে ডেটা নেওয়া যায় |
@JsonAliasহল Jackson-এর একটি শক্তিশালী অ্যানোটেশন, যা একাধিক JSON ফিল্ড নামের বিকল্প (অ্যালিয়াস) সমর্থন করে।- এটি Backward Compatibility এবং Multiple Naming Conventions নিশ্চিত করার জন্য খুবই কার্যকর।
- Jackson-এর মাধ্যমে ডেটা অ্যালিয়াসে কাজ করার সময়
@JsonAliasআপনাকে আরও বেশি নমনীয়তা এবং কাস্টমাইজেশন দেয়।
Read more