Gson-এ Custom Serializer এবং Custom Deserializer তৈরি করার মাধ্যমে আপনি Java Object এবং JSON এর মধ্যে কাস্টম রূপান্তর পরিচালনা করতে পারেন। এতে আপনি বিশেষ ক্ষেত্রগুলোর জন্য JSON স্ট্রিং গঠন করতে বা নির্দিষ্ট JSON ডেটা থেকে Java অবজেক্টে রূপান্তর করতে পারবেন।
নিচে Gson ব্যবহার করে Custom Serializer এবং Custom Deserializer তৈরি করার পদ্ধতি বর্ণনা করা হলো:
Custom Serializer তৈরি করা
Custom Serializer দিয়ে আপনি JSON রূপান্তরের সময় একটি নির্দিষ্ট ফিল্ড বা অবজেক্টের কাস্টম রূপান্তর করতে পারেন।
ধাপ ১: Custom Serializer ক্লাস তৈরি করা
ধরা যাক, আমাদের একটি Person ক্লাস আছে, যেখানে birthDate একটি Date টাইপ ফিল্ড। আমরা Date ফিল্ডটিকে একটি নির্দিষ্ট ফরম্যাটে সিরিয়ালাইজ করতে চাই।
import com.google.gson.*;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
import java.util.Date;
class Person {
String name;
Date birthDate;
// কন্সট্রাকটর
public Person(String name, Date birthDate) {
this.name = name;
this.birthDate = birthDate;
}
}
class PersonSerializer implements JsonSerializer<Person> {
@Override
public JsonElement serialize(Person person, Type typeOfSrc, JsonSerializationContext context) {
JsonObject jsonObject = new JsonObject();
// নাম সোজাসুজি JSON এ
jsonObject.addProperty("name", person.name);
// birthDate কাস্টম ফরম্যাটে
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = sdf.format(person.birthDate);
jsonObject.addProperty("birthDate", formattedDate);
return jsonObject;
}
}
ধাপ ২: Gson এ Custom Serializer ব্যবহার করা
এখন, PersonSerializer ব্যবহার করে Person অবজেক্টটি সিরিয়ালাইজ করা হবে।
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.Date;
public class Main {
public static void main(String[] args) {
// একটি Person অবজেক্ট তৈরি করুন
Person person = new Person("John Doe", new Date());
// GsonBuilder ব্যবহার করে কাস্টম Serializer নিবন্ধিত করুন
Gson gson = new GsonBuilder()
.registerTypeAdapter(Person.class, new PersonSerializer())
.create();
// Person অবজেক্টকে JSON এ রূপান্তর করুন
String json = gson.toJson(person);
// JSON স্ট্রিং প্রিন্ট করুন
System.out.println("JSON Representation: " + json);
}
}
আউটপুট:
JSON Representation: {"name":"John Doe","birthDate":"2024-12-19"}
এখানে birthDate ফিল্ডটি কাস্টম ফরম্যাটে "yyyy-MM-dd" ফরম্যাটে সিরিয়ালাইজ হয়েছে।
Custom Deserializer তৈরি করা
Custom Deserializer দিয়ে আপনি JSON থেকে Java Object এ কাস্টম রূপান্তর করতে পারবেন।
ধাপ ১: Custom Deserializer ক্লাস তৈরি করা
ধরা যাক, আমরা আগের Person ক্লাসের জন্য birthDate ফিল্ডের JSON এ একটি স্ট্রিং পাব, এবং এই স্ট্রিংটিকে Date টাইপে রূপান্তর করতে হবে।
import com.google.gson.*;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
import java.util.Date;
class PersonDeserializer implements JsonDeserializer<Person> {
@Override
public Person deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
// name এবং birthDate পড়ুন
String name = jsonObject.get("name").getAsString();
String birthDateString = jsonObject.get("birthDate").getAsString();
// birthDate স্ট্রিং থেকে Date টাইপে রূপান্তর করুন
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birthDate = null;
try {
birthDate = sdf.parse(birthDateString);
} catch (Exception e) {
e.printStackTrace();
}
// Person অবজেক্ট তৈরি করুন
return new Person(name, birthDate);
}
}
ধাপ ২: Gson এ Custom Deserializer ব্যবহার করা
এখন, PersonDeserializer ব্যবহার করে JSON স্ট্রিং থেকে Person অবজেক্টে রূপান্তর করা হবে।
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class Main {
public static void main(String[] args) {
// JSON স্ট্রিং
String json = "{\"name\":\"John Doe\",\"birthDate\":\"2024-12-19\"}";
// GsonBuilder ব্যবহার করে কাস্টম Deserializer নিবন্ধিত করুন
Gson gson = new GsonBuilder()
.registerTypeAdapter(Person.class, new PersonDeserializer())
.create();
// JSON স্ট্রিং থেকে Person অবজেক্টে রূপান্তর করুন
Person person = gson.fromJson(json, Person.class);
// Person অবজেক্টের মান প্রিন্ট করুন
System.out.println("Name: " + person.name);
System.out.println("BirthDate: " + person.birthDate);
}
}
আউটপুট:
Name: John Doe
BirthDate: Wed Dec 19 00:00:00 UTC 2024
এখানে birthDate স্ট্রিং "2024-12-19" থেকে Date অবজেক্টে কাস্টম ডেসিরিয়ালাইজড হয়েছে।
সারসংক্ষেপ:
- Custom Serializer: Java Object থেকে JSON এ কাস্টম রূপান্তরের জন্য
JsonSerializerইন্টারফেস ইমপ্লিমেন্ট করুন। - Custom Deserializer: JSON থেকে Java Object এ কাস্টম রূপান্তরের জন্য
JsonDeserializerইন্টারফেস ইমপ্লিমেন্ট করুন। - GsonBuilder: Gson এ কাস্টম serializer এবং deserializer নিবন্ধিত করতে
GsonBuilderব্যবহার করুন।
এভাবে আপনি Gson ব্যবহার করে JSON রূপান্তরের প্রক্রিয়াকে আরও কাস্টমাইজ করতে পারেন, যা বিশেষ প্রয়োজনের জন্য উপকারী হতে পারে।
Read more