GsonBuilder এর মাধ্যমে Efficient Serialization এবং Deserialization

Gson এর Performance Optimization - জিসন (Gson) - Java Technologies

307

GsonBuilder ব্যবহার করে আপনি Efficient Serialization এবং Deserialization করতে পারেন, যা Gson-এ ডেটা প্রসেসিংয়ের পারফরম্যান্স এবং মেমরি ব্যবস্থাপনাকে উন্নত করে। GsonBuilder-এর মাধ্যমে আপনি বিভিন্ন কাস্টমাইজেশন, অপটিমাইজেশন এবং ফিচার যুক্ত করতে পারেন যা JSON ডেটার রূপান্তর দ্রুত এবং কার্যকরী করে তোলে।

এখানে, আমরা GsonBuilder ব্যবহার করে কিছু Efficient Serialization এবং Deserialization কৌশল দেখব।

1. GsonBuilder এর মাধ্যমে Efficient Serialization ও Deserialization কৌশল

1.1 1. JsonSerializationContext এবং JsonDeserializationContext এর ব্যবহার

Efficient Deserialization এর জন্য JsonSerializationContext এবং JsonDeserializationContext ব্যবহার করে আপনি কাস্টম টাইপের ডেটা দ্রুত ও কার্যকরভাবে ডেসিরিয়ালাইজ করতে পারেন।

যখন আপনি কাস্টম কনভার্সন বা টাইপ হ্যান্ডলিং করতে চান, তখন GsonBuilderregisterTypeAdapter ব্যবহার করতে পারেন, যা Serialization এবং Deserialization প্রক্রিয়াকে দ্রুততর এবং বেশি কার্যকরী করে।

1.2 GsonBuilder এর মাধ্যমে Global Settings কাস্টমাইজেশন

GsonBuilder আপনাকে JSON রূপান্তরকে আরও কার্যকরী করতে কিছু বৈশিষ্ট্য কাস্টমাইজ করার সুযোগ দেয়, যেমন:

  • setLenient(): JSON Parsing সময় lenient mode চালু করা, যা অপ্রত্যাশিত JSON ফরম্যাটের ক্ষেত্রে কিছু অতিরিক্ত নমনীয়তা দেয়।
  • disableHtmlEscaping(): HTML escape characters (যেমন &, <, >) ব্লক করা। এটি কিছু রূপান্তরের জন্য সাহায্য করতে পারে।
  • excludeFieldsWithoutExposeAnnotation(): শুধুমাত্র @Expose অ্যানোটেশনযুক্ত ফিল্ডগুলো serialize এবং deserialize হবে, যা অবাঞ্ছিত ডেটা সঞ্চয়ের পরিবর্তে আরো কম পারফরম্যান্স ব্যবহারের জন্য উপকারী।

2. Efficient Serialization এবং Deserialization এর জন্য GsonBuilder এর ব্যবহার

2.1 Serialization এবং Deserialization Optimization

import com.google.gson.*;
import java.lang.reflect.Type;

public class Main {
    public static void main(String[] args) {
        // Person অবজেক্ট তৈরি
        Person person = new Person("John", 30);

        // GsonBuilder দিয়ে কিছু কাস্টম অপশন দিয়ে Gson তৈরি
        Gson gson = new GsonBuilder()
                .setLenient()  // Parsing এর সময় লিনিয়েন্ট মোড চালু
                .disableHtmlEscaping() // HTML escaping নিষ্ক্রিয়
                .excludeFieldsWithoutExposeAnnotation()  // @Expose অ্যানোটেশন ছাড়া ফিল্ডগুলো বাদ দেওয়া
                .create();

        // Serialize করা
        String json = gson.toJson(person);
        System.out.println("Serialized JSON: " + json);

        // Deserialize করা
        Person deserializedPerson = gson.fromJson(json, Person.class);
        System.out.println("Deserialized Person: " + deserializedPerson.getName());
    }
}

// Person ক্লাস
class Person {
    @Expose
    private String name;
    @Expose
    private int age;
    private String secret; // এই ফিল্ডটি serialize/deserialze হবে না কারণ @Expose নেই

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
        this.secret = "This is a secret!";
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

আউটপুট:

Serialized JSON: {"name":"John","age":30}
Deserialized Person: John

3. Memory Optimization: Serialize/Deserialize Large Objects

Efficient Serialization এবং Deserialization এর জন্য যখন বড় JSON ডেটার সাথে কাজ করবেন, তখন GsonBuilder এর সাহায্যে কিছু অপটিমাইজেশন চালু করা যেতে পারে:

  • serializeNulls(): যখন null মানগুলো বাদ দিতে চান না, তখন serializeNulls() ব্যবহার করুন।
  • disableHtmlEscaping(): HTML escape karakter গুলি যখন গুরুত্বপূর্ণ না, তখন এই অপশনটি সক্ষম করুন।

3.1 Efficient Serialization এবং Deserialization

import com.google.gson.*;

public class Main {
    public static void main(String[] args) {
        // অনেক বড় JSON ডেটার জন্য Person অবজেক্ট তৈরি
        Person person = new Person("John", 30);

        // GsonBuilder দিয়ে কিছু অপটিমাইজেশন চালু
        Gson gson = new GsonBuilder()
                .setLenient()   // JSON Parsing এ lenient mode চালু
                .serializeNulls()  // null মানও Serialize করা
                .create();

        // Serialize করা
        String json = gson.toJson(person);
        System.out.println("Serialized JSON with Nulls: " + json);

        // Deserialize করা
        Person deserializedPerson = gson.fromJson(json, Person.class);
        System.out.println("Deserialized Person: " + deserializedPerson.getName());
    }
}

আউটপুট:

Serialized JSON with Nulls: {"name":"John","age":30,"secret":"This is a secret!"}
Deserialized Person: John

4. TypeToken ব্যবহার করে Generic Type Handling

Efficient Deserialization করার জন্য যখন আপনি Generic Types বা Parameterized Types হ্যান্ডল করতে চান, তখন TypeToken ব্যবহার করা খুবই কার্যকরী। এটি আপনাকে টাইপ ইনফরমেশন সংরক্ষণ করতে সাহায্য করে এবং JSON ডেটা পার্স করার সময় টাইপ মেলাতে পারফরম্যান্স বাঁচায়।

4.1 TypeToken ব্যবহার

import com.google.gson.reflect.TypeToken;
import com.google.gson.*;

import java.lang.reflect.Type;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        // একটি List তৈরি করা
        List<Person> personList = List.of(new Person("John", 30), new Person("Alice", 25));

        // GsonBuilder দিয়ে TypeToken দিয়ে Generic Type হ্যান্ডলিং
        Gson gson = new GsonBuilder().create();
        String json = gson.toJson(personList);

        // JSON String-কে List<Person> এ Deserialize করা
        Type personListType = new TypeToken<List<Person>>() {}.getType();
        List<Person> deserializedList = gson.fromJson(json, personListType);

        // Deserialize এর পর Person এর নাম প্রিন্ট করা
        deserializedList.forEach(person -> System.out.println(person.getName()));
    }
}

আউটপুট:

John
Alice

5. Performance Testing and Benchmarking

যখন আপনি Efficient Serialization এবং Deserialization করতে চান, তখন ভালো হবে যদি আপনি পারফরম্যান্স পরীক্ষা করেন, বিশেষত বড় JSON ডেটা বা বিভিন্ন টাইপ হ্যান্ডলিংয়ের জন্য। এটি Java Performance Testing Tools যেমন JMH (Java Microbenchmarking Harness) ব্যবহার করে করা যেতে পারে।

সারাংশ:

GsonBuilder ব্যবহার করে Efficient Serialization এবং Deserialization এর জন্য কিছু অপটিমাইজেশন কৌশল:

  • Lenient Parsing (setLenient()): JSON Parsing এর সময় কমপ্লেক্স বা আংশিকভাবে সঠিক JSON ডেটা গ্রহণ।
  • Serialize Nulls (serializeNulls()): null মানগুলোকে JSON ডেটাতে অন্তর্ভুক্ত করা।
  • HTML Escaping (disableHtmlEscaping()): JSON এর HTML escape characters বাদ দেওয়া।
  • Exclude Fields Without @Expose (excludeFieldsWithoutExposeAnnotation()): শুধুমাত্র @Expose অ্যানোটেশনযুক্ত ফিল্ডগুলো Serialize/Deserialize করা।
  • Generic Types Handling (TypeToken): Generic Types বা Parameterized Types সঠিকভাবে Serialize এবং Deserialize করা।

এভাবে আপনি GsonBuilder ব্যবহার করে আপনার JSON ডেটার পারফরম্যান্স অপটিমাইজ করতে পারেন, যা বড় ডেটা এবং জটিল টাইপ গুলোর জন্য কার্যকরী হবে।

Content added By
Promotion

Are you sure to start over?

Loading...