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);
}
}
ব্যাখ্যা:
TypeTokenব্যবহার:TypeToken<List<String>>ব্যবহার করা হয়েছে যাতেGsonজানে যে এটি একটিList<String>টাইপের ডেসিরিয়ালাইজেশন করতে যাচ্ছে।TypeTokenক্লাসটি জেনেরিক টাইপের টাইপ ইনফরমেশন ধারণ করে, যাGsonএর জন্য প্রয়োজন।getType():getType()মেথডটিTypeTokenথেকে টাইপ ইনফরমেশন বের করে দেয়, যাতে এটিGsonএfromJson()মেথডের প্যারামিটার হিসাবে পাঠানো যায়।
আউটপুট:
[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এর মাধ্যমে জেনেরিক টাইপ এবং প্যারামিটারাইজড ক্লাসের ডেসিরিয়ালাইজেশন সম্ভব হয়।
Read more