Gson-এ Serialization (অথবা জাভা অবজেক্টকে JSON-এ রূপান্তর) কাস্টমাইজ করা যেতে পারে। আপনি কাস্টম Serialization কনফিগারেশন তৈরি করতে পারেন যেখানে JSON অবজেক্টের কাস্টম কাঠামো তৈরি বা কাস্টম ফরম্যাটে রূপান্তর করা হয়।
Gson-এ কাস্টম Serialization করার জন্য JsonSerializer ইন্টারফেস ব্যবহার করতে হয়।
নিচে কাস্টম Serialization কনফিগারেশন করার একটি উদাহরণ দেয়া হলো:
উদাহরণ: কাস্টম Serialization
ধরা যাক, আমাদের একটি Person ক্লাস রয়েছে এবং আমরা চাই যে, Person অবজেক্ট JSON এ রূপান্তর করার সময়, তার নামের প্রথম অক্ষর বড় অক্ষরে এবং বয়সের মান দুই গুণ হয়ে JSON-এ উপস্থিত হোক।
1. JsonSerializer ইন্টারফেসের ব্যবহার
import com.google.gson.*;
import java.lang.reflect.Type;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person("john", 25);
// Gson Builder ব্যবহার করে কাস্টম Serialization সেট করা
Gson gson = new GsonBuilder()
.registerTypeAdapter(Person.class, new PersonSerializer())
.create();
// JSON এ রূপান্তর করা
String json = gson.toJson(person);
System.out.println(json); // {"name":"John","age":50}
}
}
class PersonSerializer implements JsonSerializer<Person> {
@Override
public JsonElement serialize(Person person, Type typeOfSrc, JsonSerializationContext context) {
JsonObject jsonObject = new JsonObject();
// নামের প্রথম অক্ষর বড় করে দেয়া
jsonObject.addProperty("name", capitalizeFirstLetter(person.getName()));
// বয়সের মান দুই গুণ করা
jsonObject.addProperty("age", person.getAge() * 2);
return jsonObject;
}
// নামের প্রথম অক্ষর বড় করার জন্য একটি মেথড
private String capitalizeFirstLetter(String name) {
if (name == null || name.isEmpty()) {
return name;
}
return name.substring(0, 1).toUpperCase() + name.substring(1);
}
}
2. কী ঘটছে এখানে?
PersonSerializerক্লাসটিJsonSerializerইন্টারফেস ইমপ্লিমেন্ট করে, যা কাস্টম Serialization-এর জন্য প্রয়োজন।serializeমেথডে আমরাPersonঅবজেক্ট থেকেnameএবংageমান কাস্টমাইজ করছি:- নামের প্রথম অক্ষর বড় করছি।
- বয়সের মান দুই গুণ করছি।
GsonBuilderএর মাধ্যমেregisterTypeAdapterমেথড ব্যবহার করে এই কাস্টম Serializer নিবন্ধন করা হচ্ছে।
3. আউটপুট
{
"name": "John",
"age": 50
}
4. Gson Builder ব্যবহার করে কাস্টম Serialization সেট করা
এই কাস্টম Serialization কনফিগারেশনটি GsonBuilder এর মাধ্যমে করা হয়েছে। আপনি বিভিন্ন ধরনের কাস্টম Serialization এবং Deserialization কোড একত্রে রাখতে পারেন এবং প্রয়োজনে Gson এর মাধ্যমে তাদের ব্যবহার করতে পারেন।
5. অন্য কাস্টম Serialization উদাহরণ
- যদি আপনি চান যে কোন ফিল্ড JSON এ না দেখানো হোক, তাহলে আপনি
@Exposeএবং@SerializedNameঅ্যানোটেশন ব্যবহার করতে পারেন। তবে এই কাস্টম Serialization লাইফসাইকেলে এরকম কন্ট্রোল যুক্ত করা Gson দিয়ে আরো সহজ।
এইভাবে আপনি Gson-এ Serialization কাস্টমাইজ করতে পারেন।
Read more