Boon লাইব্রেরি ব্যবহার করে JSON Serialization এবং Deserialization কাস্টমাইজ করা অত্যন্ত সহজ এবং কার্যকরী। Boon JSON ডেটার সিরিয়ালাইজেশন (Java Object to JSON) এবং ডেসিরিয়ালাইজেশন (JSON to Java Object) প্রক্রিয়া সহজে সম্পাদন করতে সাহায্য করে। এই প্রক্রিয়াগুলোর কাস্টমাইজেশন করতে হলে Boon এর কিছু গুরুত্বপূর্ণ ফিচার ব্যবহার করা যায়।
JSON Serialization এবং Deserialization কাস্টমাইজেশন
1. JSON Serialization কাস্টমাইজেশন
JSON Serialization হল Java অবজেক্টকে JSON ফর্ম্যাটে রূপান্তর করার প্রক্রিয়া। Boon লাইব্রেরি ব্যবহার করে কাস্টম JSON Serialization করা যেতে পারে, যাতে Java অবজেক্টগুলির ফিল্ড নাম, ফরম্যাট বা কিছু নির্দিষ্ট বৈশিষ্ট্য কাস্টমাইজ করা যায়।
Customizing Field Name with @JsonProperty
Boon লাইব্রেরিতে @JsonProperty এনোটেশন ব্যবহার করে ফিল্ড নাম কাস্টমাইজ করা যায়। যদি আপনি Java ক্লাসের ফিল্ডের নাম পরিবর্তন করতে চান, তাহলে এই এনোটেশনটি ব্যবহার করা যেতে পারে।
উদাহরণ:
import org.boon.json.JsonFactory;
import org.boon.json.JsonMapper;
import org.boon.json.annotations.JsonProperty;
public class User {
@JsonProperty("user_name") // JSON এ 'user_name' হবে
private String username;
@JsonProperty("user_age") // JSON এ 'user_age' হবে
private int age;
// Getter and Setter methods
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public static void main(String[] args) {
User user = new User();
user.setUsername("John Doe");
user.setAge(30);
JsonMapper mapper = JsonFactory.create();
String json = mapper.writeValueAsString(user);
System.out.println(json); // Output will have user_name and user_age as keys
}
}
আউটপুট:
{
"user_name": "John Doe",
"user_age": 30
}
এখানে @JsonProperty ব্যবহার করে username এবং age ফিল্ডের JSON প্রপার্টি নাম কাস্টমাইজ করা হয়েছে।
Custom Date Format for Serialization
আপনি যদি Date টাইপের ডেটা JSON এ নির্দিষ্ট ফরম্যাটে সিরিয়ালাইজ করতে চান, তবে Boon লাইব্রেরি দিয়ে এটি কাস্টমাইজ করা যেতে পারে।
import org.boon.json.JsonFactory;
import org.boon.json.JsonMapper;
import org.boon.json.annotations.JsonProperty;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Event {
@JsonProperty("event_date")
private Date date;
public Event(Date date) {
this.date = date;
}
public static void main(String[] args) {
Event event = new Event(new Date());
JsonMapper mapper = JsonFactory.create();
// Custom date format
mapper.config().setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
String json = mapper.writeValueAsString(event);
System.out.println(json); // Custom date format applied
}
}
আউটপুট:
{
"event_date": "2024-12-18 14:35:50"
}
এখানে SimpleDateFormat ব্যবহার করে JSON এ ডেট ফিল্ডের ফরম্যাট কাস্টমাইজ করা হয়েছে।
2. JSON Deserialization কাস্টমাইজেশন
JSON Deserialization হল JSON ডেটাকে Java অবজেক্টে রূপান্তর করার প্রক্রিয়া। Boon লাইব্রেরি ব্যবহার করে JSON ডেটার ডেসিরিয়ালাইজেশন কাস্টমাইজ করা যেতে পারে, যাতে JSON ডেটা পার্সিংয়ের সময় কিছু নির্দিষ্ট কাস্টম ফর্ম্যাট বা ডিফল্ট ভ্যালু ব্যবহার করা যায়।
Custom Constructor for Deserialization
Boon JSON ডেটাকে Java অবজেক্টে ডেসিরিয়ালাইজ করার সময় কাস্টম কনস্ট্রাক্টর ব্যবহার করতে সহায়তা করে। উদাহরণস্বরূপ, আপনি যদি JSON ডেটা ব্যবহার করে Java অবজেক্ট ইনস্ট্যান্স করতে চান, তবে কাস্টম কনস্ট্রাক্টর ব্যবহার করতে পারেন।
import org.boon.json.JsonFactory;
import org.boon.json.JsonMapper;
import org.boon.json.annotations.JsonProperty;
public class Product {
private String name;
private double price;
// Custom constructor
public Product(@JsonProperty("product_name") String name, @JsonProperty("product_price") double price) {
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "Product{name='" + name + "', price=" + price + '}';
}
public static void main(String[] args) {
String json = "{\"product_name\":\"Laptop\", \"product_price\": 999.99}";
JsonMapper mapper = JsonFactory.create();
Product product = mapper.readValue(json, Product.class);
System.out.println(product);
}
}
আউটপুট:
Product{name='Laptop', price=999.99}
এখানে, @JsonProperty এনোটেশন ব্যবহার করে কাস্টম কনস্ট্রাক্টর ব্যবহার করা হয়েছে, যাতে JSON ডেটা ফিল্ডগুলো Java অবজেক্টের কনস্ট্রাক্টরে সঠিকভাবে ম্যাপ হয়।
Handling Missing Fields during Deserialization
Boon ডেসিরিয়ালাইজেশন করার সময় যদি কোনো ফিল্ড JSON এ অনুপস্থিত থাকে, তবে এটি null প্রদান করবে। তবে, আপনি যদি কোনও মিসিং ফিল্ডের জন্য ডিফল্ট মান দিতে চান, তাহলে সেটি কাস্টমাইজ করা যেতে পারে।
import org.boon.json.JsonFactory;
import org.boon.json.JsonMapper;
public class Customer {
private String name;
private int age = 18; // Default age
// Getter and Setter methods
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 static void main(String[] args) {
String json = "{\"name\": \"Alice\"}"; // No 'age' field in JSON
JsonMapper mapper = JsonFactory.create();
Customer customer = mapper.readValue(json, Customer.class);
System.out.println("Name: " + customer.getName());
System.out.println("Age: " + customer.getAge()); // Default age will be used
}
}
আউটপুট:
Name: Alice
Age: 18
এখানে, যদি age ফিল্ড JSON এ অনুপস্থিত থাকে, তবে ডিফল্ট মান 18 দেওয়া হবে।
সারাংশ
Boon লাইব্রেরির মাধ্যমে JSON Serialization এবং Deserialization কাস্টমাইজেশন খুবই সহজ এবং কার্যকরী। আপনি @JsonProperty এনোটেশন ব্যবহার করে JSON প্রপার্টির নাম কাস্টমাইজ করতে পারেন, ডেটা ফরম্যাট এবং কনস্ট্রাক্টর কাস্টমাইজ করতে পারেন, এবং JSON ডেটার মিসিং ফিল্ডে ডিফল্ট মান প্রদান করতে পারেন। Boon এর এই কাস্টমাইজেশন ফিচারগুলি JSON ডেটা পার্সিং এবং ম্যানিপুলেশনকে আরও শক্তিশালী ও নমনীয় করে তোলে।