Generic টাইপের কাজ (TypeToken ব্যবহার করে)

JSON এর সাথে Collection এবং Generic টাইপের কাজ - জিসন (Gson) - Java Technologies

390

Gson লাইব্রেরি ব্যবহার করে Generic টাইপের কাজ করার জন্য TypeToken ব্যবহার করতে হয়। Gson এর TypeToken ক্লাসটি টাইপ প্যারামিটারগুলির সাথে জেনেরিক টাইপ সঠিকভাবে ডেসিরিয়ালাইজ করার জন্য ব্যবহৃত হয়। কারণ Java রিফ্লেকশন মাধ্যমে প্রকারের তথ্য (type information) পাওয়া কঠিন, বিশেষত যখন জেনেরিক টাইপ ব্যবহৃত হয়।

উদাহরণ:

ধরা যাক, আমাদের একটি List<String> টাইপের JSON ডেটা আছে এবং আমরা সেটি Gson ব্যবহার করে একটি জেনেরিক টাইপে ডেসিরিয়ালাইজ করতে চাই।

Maven ডিপেনডেন্সি:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.8</version>
</dependency>

TypeToken ব্যবহার করে জেনেরিক টাইপের ডেসিরিয়ালাইজ:

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        String json = "[\"Apple\", \"Banana\", \"Orange\"]";

        // Gson ইনস্ট্যান্স তৈরি
        Gson gson = new Gson();

        // TypeToken ব্যবহার করে জেনেরিক টাইপের ডেসিরিয়ালাইজ করা
        Type listType = new TypeToken<List<String>>(){}.getType();
        List<String> fruitList = gson.fromJson(json, listType);

        // আউটপুট প্রদর্শন
        System.out.println(fruitList);
    }
}

ব্যাখ্যা:

  1. TypeToken ব্যবহার: TypeToken<List<String>> ব্যবহার করা হয়েছে যাতে Gson জানে যে এটি একটি List<String> টাইপের ডেসিরিয়ালাইজেশন করতে যাচ্ছে। TypeToken ক্লাসটি জেনেরিক টাইপের টাইপ ইনফরমেশন ধারণ করে, যা Gson এর জন্য প্রয়োজন।
  2. getType(): getType() মেথডটি TypeToken থেকে টাইপ ইনফরমেশন বের করে দেয়, যাতে এটি GsonfromJson() মেথডের প্যারামিটার হিসাবে পাঠানো যায়।

আউটপুট:

[Apple, Banana, Orange]

অন্য একটি উদাহরণ: জেনেরিক ক্লাস ডেসিরিয়ালাইজ করা

ধরা যাক, আমাদের একটি কাস্টম জেনেরিক ক্লাস Box<T> আছে এবং আমরা সেই ক্লাসের JSON ডেটা ডেসিরিয়ালাইজ করতে চাই।

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

import java.lang.reflect.Type;

class Box<T> {
    private T value;

    public Box(T value) {
        this.value = value;
    }

    public T getValue() {
        return value;
    }

    @Override
    public String toString() {
        return "Box{" + "value=" + value + '}';
    }
}

public class Main {
    public static void main(String[] args) {
        String json = "{\"value\": 123}";

        // Gson ইনস্ট্যান্স তৈরি
        Gson gson = new Gson();

        // TypeToken ব্যবহার করে জেনেরিক টাইপের ডেসিরিয়ালাইজ করা
        Type boxType = new TypeToken<Box<Integer>>(){}.getType();
        Box<Integer> box = gson.fromJson(json, boxType);

        // আউটপুট প্রদর্শন
        System.out.println(box);
    }
}

এখানে Box<Integer> টাইপের JSON ডেটা ডেসিরিয়ালাইজ করা হয়েছে।

আউটপুট:

Box{value=123}

সারাংশ:

  • TypeToken ক্লাস ব্যবহার করে আমরা জেনেরিক টাইপের ডেসিরিয়ালাইজেশন করতে পারি।
  • এটি Gson কে টাইপ ইনফরমেশন প্রদান করে, যাতে এটি সঠিকভাবে JSON ডেটা কনভার্ট করতে পারে।
  • সাধারণত TypeToken এর মাধ্যমে জেনেরিক টাইপ এবং প্যারামিটারাইজড ক্লাসের ডেসিরিয়ালাইজেশন সম্ভব হয়।
Content added By
Promotion

Are you sure to start over?

Loading...