Complex Data Structure এর জন্য Custom মেথড

Gson এর মাধ্যমে কাস্টম Serialization এবং Deserialization - জিসন (Gson) - Java Technologies

349

যদি আপনার Complex Data Structure থাকে এবং আপনি Gson দিয়ে JSON এ কনভার্ট করতে চান, তবে কখনও কখনও আপনাকে Custom Serialization এবং Deserialization মেথড ব্যবহার করতে হতে পারে। এর জন্য Gson আপনাকে JsonSerializer এবং JsonDeserializer ইন্টারফেস প্রদান করে, যা আপনাকে কাস্টম রূপান্তর করতে সাহায্য করে।

নিচে Complex Data Structure এর জন্য কাস্টম মেথডের উদাহরণ দেয়া হলো।

উদাহরণ:

ধরা যাক, আপনার একটি Person ক্লাস আছে, যেখানে Address নামে একটি অবজেক্ট রয়েছে। আপনাকে JSON এ কনভার্ট করার সময় কাস্টম লজিক ব্যবহার করতে হবে।

1. Custom Serialization (Object to JSON)

এখানে আমরা একটি Person ক্লাসের জন্য কাস্টম Serialization দেখাবো, যেখানে Address ফিল্ডটি একটি নির্দিষ্ট ফরম্যাটে JSON এ কনভার্ট হবে।

Address এবং Person ক্লাস:

public class Address {
    private String city;
    private String street;

    // Constructor, getters and setters
    public Address(String city, String street) {
        this.city = city;
        this.street = street;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }
}

public class Person {
    private String name;
    private int age;
    private Address address;

    // Constructor, getters and setters
    public Person(String name, int age, Address address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }

    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 Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }
}

2. Custom Serializer তৈরি করা

এখন আমরা Address অবজেক্টের জন্য কাস্টম Serialization তৈরি করব, যেখানে Address এর city এবং street ফিল্ড গুলি একটি কাস্টম ফরম্যাটে JSON এ রূপান্তর হবে।

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;

import java.lang.reflect.Type;

public class AddressSerializer implements JsonSerializer<Address> {
    @Override
    public JsonElement serialize(Address address, Type typeOfSrc, JsonSerializationContext context) {
        JsonObject addressJson = new JsonObject();
        addressJson.addProperty("fullAddress", address.getStreet() + ", " + address.getCity());
        return addressJson;
    }
}

এখানে AddressSerializer কাস্টম মেথড ব্যবহার করা হচ্ছে যাতে Address কে JSON এ কনভার্ট করার সময় street এবং city কে একত্রে fullAddress হিসেবে প্রেরণ করা হয়।

3. GsonBuilder ব্যবহার করে কাস্টম Serializer রেজিস্টার করা

এখন, আমরা GsonBuilder ব্যবহার করে এই কাস্টম Serializer রেজিস্টার করব এবং Person অবজেক্ট JSON এ কনভার্ট করব।

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

public class Main {
    public static void main(String[] args) {
        // Address অবজেক্ট তৈরি করা
        Address address = new Address("New York", "5th Avenue");

        // Person অবজেক্ট তৈরি করা
        Person person = new Person("John Doe", 30, address);

        // GsonBuilder ব্যবহার করে কাস্টম Serializer রেজিস্টার করা
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.registerTypeAdapter(Address.class, new AddressSerializer());
        Gson gson = gsonBuilder.create();

        // Person অবজেক্ট JSON এ কনভার্ট করা
        String json = gson.toJson(person);

        // JSON আউটপুট প্রিন্ট করা
        System.out.println(json);
    }
}

আউটপুট:

{
  "name": "John Doe",
  "age": 30,
  "address": {
    "fullAddress": "5th Avenue, New York"
  }
}

4. Custom Deserialization (JSON to Object)

এখন, ধরুন আপনি JSON থেকে Address এবং Person অবজেক্টে কনভার্ট করতে চান, কিন্তু কিছু কাস্টম ফরম্যাটে (যেমন, fullAddress থেকে street এবং city আলাদা করতে)।

কাস্টম Deserializer তৈরি করা:

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;

import java.lang.reflect.Type;

public class AddressDeserializer implements JsonDeserializer<Address> {
    @Override
    public Address deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) {
        JsonObject jsonObject = json.getAsJsonObject();
        String fullAddress = jsonObject.get("fullAddress").getAsString();
        String[] addressParts = fullAddress.split(", ");

        // City এবং Street আলাদা করে Address অবজেক্টে সেট করা
        return new Address(addressParts[1], addressParts[0]);
    }
}

GsonBuilder দিয়ে কাস্টম Deserializer রেজিস্টার করা:

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\",\"age\":30,\"address\":{\"fullAddress\":\"5th Avenue, New York\"}}";

        // GsonBuilder দিয়ে কাস্টম Deserializer রেজিস্টার করা
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.registerTypeAdapter(Address.class, new AddressDeserializer());
        Gson gson = gsonBuilder.create();

        // JSON কে Person অবজেক্টে কনভার্ট করা
        Person person = gson.fromJson(json, Person.class);

        // Person অবজেক্ট প্রিন্ট করা
        System.out.println(person.getName());
        System.out.println(person.getAddress().getStreet());
        System.out.println(person.getAddress().getCity());
    }
}

আউটপুট:

John Doe
5th Avenue
New York
  • Custom Serialization এবং Deserialization Gson-এ ব্যবহার করে আপনি খুব সহজে Complex Data Structures কে JSON-এ কনভার্ট করতে পারেন অথবা JSON থেকে Objects এ কনভার্ট করতে পারেন।
  • আপনি JsonSerializer এবং JsonDeserializer ইন্টারফেস ব্যবহার করে কাস্টম লজিক প্রয়োগ করতে পারবেন যা আপনার প্রয়োজনে যথাযথভাবে কাজ করবে।
Content added By
Promotion

Are you sure to start over?

Loading...