Serialization এর কাস্টম কনফিগারেশন

Java Object থেকে JSON (Serialization) - জিসন (Gson) - Java Technologies

342

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 কাস্টমাইজ করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...