Enum এর জন্য Custom Serializer এবং Deserializer তৈরি করা

Gson এবং Enums ব্যবস্থাপনা - জিসন (Gson) - Java Technologies

341

Gson দিয়ে আপনি Enum টাইপের জন্য custom serialization এবং deserialization তৈরি করতে পারেন। Enum সাধারণত নির্দিষ্ট সেটের মান দিয়ে গঠিত একটি ডেটা টাইপ, এবং Gson এর মাধ্যমে আপনি সহজেই Enum এর জন্য কাস্টম সিরিয়ালাইজেশন এবং ডিজিরিয়ালাইজেশন তৈরি করতে পারেন।

১. Enum এর জন্য Custom Serializer এবং Deserializer তৈরি করা

Gson দিয়ে Enum টাইপের জন্য কাস্টম সিরিয়ালাইজেশন এবং ডিজিরিয়ালাইজেশন করার জন্য, আপনাকে JsonSerializer এবং JsonDeserializer ইন্টারফেস ইমপ্লিমেন্ট করতে হবে। এই ইন্টারফেসগুলো আপনাকে JSON রূপান্তর কাস্টমাইজ করতে সাহায্য করবে।


২. Enum Example:

ধরা যাক, আমাদের একটি Day enum আছে, যেখানে সপ্তাহের দিনগুলির জন্য মান রয়েছে:

public enum Day {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
}

আমরা এই enum এর জন্য কাস্টম সিরিয়ালাইজেশন এবং ডিজিরিয়ালাইজেশন তৈরি করতে যাচ্ছি, যাতে JSON এ সপ্তাহের দিনটি ছোট হাতের অক্ষরে (mon, tue ইত্যাদি) হিসেবে দেখানো হয় এবং ইনপুটেও সেই মান গ্রহণ করা যায়।


৩. Custom Serializer এবং Deserializer

3.1. Custom Serializer:

JsonSerializer ইন্টারফেস ইমপ্লিমেন্ট করে আমরা কাস্টম সিরিয়ালাইজার তৈরি করতে পারি। এখানে আমরা Enum কে ছোট হাতের অক্ষরে রূপান্তর করব।

import com.google.gson.JsonElement;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import java.lang.reflect.Type;

public class DaySerializer implements JsonSerializer<Day> {
    @Override
    public JsonElement serialize(Day src, Type typeOfSrc, JsonSerializationContext context) {
        // Enum কে ছোট হাতের অক্ষরে রূপান্তর করা
        return context.serialize(src.name().toLowerCase());
    }
}

3.2. Custom Deserializer:

JsonDeserializer ইন্টারফেস ইমপ্লিমেন্ট করে আমরা কাস্টম ডিজিরিয়ালাইজার তৈরি করতে পারি। এখানে আমরা JSON এর ছোট হাতের মানটি Day enum এ রূপান্তর করব।

import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.JsonDeserializer;
import java.lang.reflect.Type;

public class DayDeserializer implements JsonDeserializer<Day> {
    @Override
    public Day deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
        // JSON এর ছোট হাতের মান থেকে Enum টাইপে রূপান্তর করা
        return Day.valueOf(json.getAsString().toUpperCase());
    }
}

৪. GsonBuilder দিয়ে Custom Serializer এবং Deserializer ব্যবহার করা

GsonBuilder ব্যবহার করে আমরা কাস্টম সিরিয়ালাইজার এবং ডিজিরিয়ালাইজার যোগ করতে পারি। নিচে পুরো প্রক্রিয়া দেখানো হলো:

Complete Example with Custom Serializer and Deserializer:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class Main {
    public static void main(String[] args) {
        // GsonBuilder দিয়ে কাস্টম Serializer এবং Deserializer যোগ করা
        Gson gson = new GsonBuilder()
                        .registerTypeAdapter(Day.class, new DaySerializer())  // Custom Serializer
                        .registerTypeAdapter(Day.class, new DayDeserializer()) // Custom Deserializer
                        .create();

        // Enum value
        Day day = Day.MONDAY;
        
        // Serialize Enum to JSON
        String json = gson.toJson(day);
        System.out.println("Serialized JSON: " + json);  // Output: "mon"

        // Deserialize JSON to Enum
        Day deserializedDay = gson.fromJson("\"mon\"", Day.class);
        System.out.println("Deserialized Enum: " + deserializedDay);  // Output: MONDAY
    }
}

Output:

Serialized JSON: "mon"
Deserialized Enum: MONDAY

এখানে, আমরা কাস্টম সিরিয়ালাইজার এবং ডিজিরিয়ালাইজার ব্যবহার করে Day enum এর JSON রূপান্তর কাস্টমাইজ করেছি:

  • Serialization: MONDAY enum value কে "mon" এ রূপান্তর করা হয়েছে।
  • Deserialization: "mon" থেকে MONDAY enum value রূপান্তর করা হয়েছে।

৫. কাস্টম Serializer এবং Deserializer ব্যবহার করার সুবিধা

  1. মান কাস্টমাইজেশন: JSON এ enum এর মান কাস্টমভাবে ফরম্যাট করতে পারবেন (যেমন, ছোট হাতের অক্ষর, বা বিশেষ কোনো ফরম্যাটে)।
  2. ইনপুট নিয়ন্ত্রণ: JSON থেকে enum এ ইনপুটকে কাস্টম পদ্ধতিতে রূপান্তরিত করতে পারবেন (যেমন, ছোট হাতের অক্ষরের মানকে enum এর বড় হাতের রূপে রূপান্তর)।
  3. ফ্লেক্সিবিলিটি: Gson আপনাকে কাস্টম লজিক প্রয়োগ করার জন্য সম্পূর্ণ নিয়ন্ত্রণ দেয়, যেমন: enum নামের পরিবর্তে কোনো ভিন্ন মানের জন্য JSON ফরম্যাট তৈরি করা।

Gson এর মাধ্যমে Enum এর জন্য custom serializer এবং deserializer তৈরি করা সহজ। আপনি JsonSerializer এবং JsonDeserializer ইন্টারফেস ইমপ্লিমেন্ট করে কাস্টম রূপান্তর তৈরি করতে পারেন যা আপনার JSON ডেটার প্রক্রিয়াকে আরো নমনীয় এবং নিয়ন্ত্রিত করে।

Content added By
Promotion

Are you sure to start over?

Loading...