Gson ব্যবহার করে Java Object থেকে JSON রূপান্তর করার প্রক্রিয়া (Serialization) খুবই সহজ। এটি Java অবজেক্টকে JSON ফরম্যাটে রূপান্তর করার জন্য toJson() মেথড প্রদান করে। নিচে এটি কীভাবে কাজ করে তা উদাহরণসহ ব্যাখ্যা করা হলো।
Java Object থেকে JSON (Serialization) করার উদাহরণ:
ধাপ ১: Gson লাইব্রেরি অন্তর্ভুক্ত করুন
প্রথমে, Gson লাইব্রেরি প্রকল্পে অন্তর্ভুক্ত করতে হবে। যদি আপনি Maven বা Gradle ব্যবহার করেন, তাহলে আগের উত্তর থেকে Gson-এর dependency যোগ করে নিন।
ধাপ ২: Java Object তৈরি করুন
ধরা যাক, আমাদের একটি Person ক্লাস রয়েছে, যেখানে একটি ব্যক্তির নাম এবং বয়স সংরক্ষিত থাকবে।
public class Person {
String name;
int age;
// কন্সট্রাকটর
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
ধাপ ৩: Gson ব্যবহার করে Java Object থেকে JSON এ রূপান্তর
এখন আমরা Gson ব্যবহার করে Person অবজেক্টটি JSON ফরম্যাটে রূপান্তর করব।
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
// একটি Java অবজেক্ট তৈরি করুন
Person person = new Person("John Doe", 30);
// Gson অবজেক্ট তৈরি করুন
Gson gson = new Gson();
// Java অবজেক্টকে JSON স্ট্রিং-এ রূপান্তর করুন
String json = gson.toJson(person);
// JSON স্ট্রিং প্রিন্ট করুন
System.out.println("JSON Representation: " + json);
}
}
আউটপুট:
JSON Representation: {"name":"John Doe","age":30}
এখানে toJson() মেথড ব্যবহার করে আমরা Person অবজেক্টকে JSON ফরম্যাটে রূপান্তর করেছি। JSON স্ট্রিংটি দেখাচ্ছে "name" এবং "age" এর মান।
বিবরণ:
Gson gson = new Gson();: Gson অবজেক্ট তৈরি করে।gson.toJson(person);:Personঅবজেক্টকে JSON-এ রূপান্তরিত করে।- ফলস্বরূপ, একটি JSON স্ট্রিং পাওয়া যায় যা Java অবজেক্টের সমতুল্য।
অতিরিক্ত টিপস:
- এন্যুম (Enum) সিরিয়ালাইজেশন: Gson স্বয়ংক্রিয়ভাবে Java Enum গুলোকে সিরিয়ালাইজ করতে সক্ষম।
- Nested Objects: যদি আপনার Java অবজেক্টে অন্য অবজেক্ট থাকে (যেমন:
Addressঅবজেক্ট), তবে Gson স্বয়ংক্রিয়ভাবে সেগুলোকেও সিরিয়ালাইজ করবে।
এটি Java Object থেকে JSON এ রূপান্তরের মূল ধারণা। আপনি এতে আরো কাস্টমাইজেশন যোগ করতে পারেন, যেমন কাস্টম সিরিয়ালাইজেশন।
Java Object কে JSON এ কনভার্ট করতে Gson ব্যবহার করার জন্য নিচের পদক্ষেপগুলো অনুসরণ করতে পারেন:
1. Maven Dependency
প্রথমে, আপনার pom.xml ফাইলে Gson ডিপেনডেন্সি যোগ করুন (যেমন পূর্বে উল্লেখ করা হয়েছে):
<dependencies>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.9</version>
</dependency>
</dependencies>
2. Java Object কে JSON এ কনভার্ট করা
গোছানো একটি Person ক্লাস তৈরি করা যাক, এবং এটি JSON ফরম্যাটে কনভার্ট করব।
উদাহরণ কোড:
import com.google.gson.Gson;
class Person {
private String name;
private int age;
// Constructor
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter methods
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
// Java Object তৈরি করা
Person person = new Person("John Doe", 30);
// Gson অবজেক্ট তৈরি করা
Gson gson = new Gson();
// Java Object কে JSON String এ কনভার্ট করা
String json = gson.toJson(person);
// JSON String প্রিন্ট করা
System.out.println(json);
}
}
আউটপুট:
{"name":"John Doe","age":30}
এখানে, Person ক্লাসের একটি অবজেক্ট gson.toJson() মেথডের মাধ্যমে JSON ফরম্যাটে কনভার্ট করা হয়েছে।
ব্যাখ্যা:
Gson gson = new Gson();→ Gson অবজেক্ট তৈরি করা।gson.toJson(person);→Personঅবজেক্টকে JSON ফরম্যাটে কনভার্ট করা।- আউটপুট হিসেবে আপনি দেখতে পাবেন, এটি একটি JSON স্ট্রিং যা আপনার Java অবজেক্টের ক্ষেত্রগুলির মান প্রদর্শন করবে।
Gson এর toJson() মেথডটি একটি Java অবজেক্টকে JSON স্ট্রিং এ কনভার্ট করার জন্য ব্যবহৃত হয়। এই মেথডটি খুবই সহজ এবং কার্যকরীভাবে Java অবজেক্টকে JSON ফর্ম্যাটে রূপান্তরিত করে।
নিচে একটি উদাহরণ দেওয়া হলো, যেখানে Gson এর toJson() মেথড ব্যবহার করা হয়েছে:
উদাহরণ:
import com.google.gson.Gson;
class Person {
String name;
int age;
// Constructor
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class GsonExample {
public static void main(String[] args) {
// Create an instance of Person
Person person = new Person("John Doe", 25);
// Create a Gson object
Gson gson = new Gson();
// Convert the Person object to JSON
String json = gson.toJson(person);
// Print the JSON string
System.out.println(json);
}
}
আউটপুট:
{"name":"John Doe","age":25}
ব্যাখ্যা:
- এখানে একটি
Personক্লাস তৈরি করা হয়েছে, যার দুটি ফিল্ড আছে:nameএবংage। Gsonঅবজেক্ট তৈরি করার পরtoJson()মেথড ব্যবহার করেpersonঅবজেক্টকে JSON স্ট্রিং এ রূপান্তরিত করা হয়েছে।- এই JSON স্ট্রিংটি
{"name":"John Doe","age":25}আকারে প্রিন্ট হয়েছে।
toJson() এর আরও কিছু ব্যবহার:
- আপনি
toJson()মেথডেListবাMapএর মতো সংগ্রহও কনভার্ট করতে পারেন। toJson()মেথডটি অবজেক্টের সব ফিল্ডকে JSON এ কনভার্ট করবে, তবেtransientফিল্ডগুলো বাদ যাবে যদি সেগুলো থাকে।
এভাবেই toJson() মেথড দিয়ে আপনার Java অবজেক্টকে সহজে JSON ফরম্যাটে রূপান্তরিত করা সম্ভব।
Gson লাইব্রেরি ব্যবহার করে Complex Object এবং Collection (যেমন List, Map) কে JSON ফরম্যাটে কনভার্ট করতে, আপনি নিচের পদ্ধতিগুলি অনুসরণ করতে পারেন:
1. Complex Object কনভার্ট করা
ধরা যাক, আপনার একটি Person ক্লাস রয়েছে যা কিছু প্রপার্টি ধারণ করে, এবং আপনি এটি Gson ব্যবহার করে JSON এ কনভার্ট করতে চান।
Person ক্লাস উদাহরণ:
public class Person {
private String name;
private int age;
// Constructor, getters, and setters
public Person(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
}
Gson ব্যবহার করে Complex Object কনভার্ট করা:
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
// Person object তৈরি করা
Person person = new Person("John Doe", 30);
// Gson object তৈরি করা
Gson gson = new Gson();
// Person object কে JSON এ কনভার্ট করা
String json = gson.toJson(person);
// JSON আউটপুট প্রিন্ট করা
System.out.println(json);
}
}
আউটপুট:
{"name":"John Doe","age":30}
2. Collection (List, Map) কনভার্ট করা
Gson ব্যবহার করে List বা Map কনভার্ট করার জন্য, আপনি নীচের কোড অনুসরণ করতে পারেন।
List কনভার্ট করা:
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
// List তৈরি করা
List<Person> personList = new ArrayList<>();
personList.add(new Person("John Doe", 30));
personList.add(new Person("Jane Smith", 25));
// Gson object তৈরি করা
Gson gson = new Gson();
// List কে JSON এ কনভার্ট করা
String json = gson.toJson(personList);
// JSON আউটপুট প্রিন্ট করা
System.out.println(json);
}
}
আউটপুট:
[{"name":"John Doe","age":30},{"name":"Jane Smith","age":25}]
Map কনভার্ট করা:
import com.google.gson.Gson;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
// Map তৈরি করা
Map<String, Person> personMap = new HashMap<>();
personMap.put("person1", new Person("John Doe", 30));
personMap.put("person2", new Person("Jane Smith", 25));
// Gson object তৈরি করা
Gson gson = new Gson();
// Map কে JSON এ কনভার্ট করা
String json = gson.toJson(personMap);
// JSON আউটপুট প্রিন্ট করা
System.out.println(json);
}
}
আউটপুট:
{
"person1": {"name":"John Doe","age":30},
"person2": {"name":"Jane Smith","age":25}
}
- Complex Objects এবং Collections (যেমন
ListবাMap) কে Gson দিয়ে JSON এ কনভার্ট করা অনেক সহজ। আপনাকে শুধুGsonক্লাসেরtoJson()মেথড ব্যবহার করতে হবে।
Gson-এ Serialization (অথবা জাভা অবজেক্টকে JSON-এ রূপান্তর) কাস্টমাইজ করা যেতে পারে। আপনি কাস্টম Serialization কনফিগারেশন তৈরি করতে পারেন যেখানে JSON অবজেক্টের কাস্টম কাঠামো তৈরি বা কাস্টম ফরম্যাটে রূপান্তর করা হয়।
Gson-এ কাস্টম Serialization করার জন্য JsonSerializer ইন্টারফেস ব্যবহার করতে হয়।
নিচে কাস্টম Serialization কনফিগারেশন করার একটি উদাহরণ দেয়া হলো:
উদাহরণ: কাস্টম Serialization
ধরা যাক, আমাদের একটি Person ক্লাস রয়েছে এবং আমরা চাই যে, Person অবজেক্ট JSON এ রূপান্তর করার সময়, তার নামের প্রথম অক্ষর বড় অক্ষরে এবং বয়সের মান দুই গুণ হয়ে JSON-এ উপস্থিত হোক।
1. JsonSerializer ইন্টারফেসের ব্যবহার
import com.google.gson.*;
import java.lang.reflect.Type;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person("john", 25);
// Gson Builder ব্যবহার করে কাস্টম Serialization সেট করা
Gson gson = new GsonBuilder()
.registerTypeAdapter(Person.class, new PersonSerializer())
.create();
// JSON এ রূপান্তর করা
String json = gson.toJson(person);
System.out.println(json); // {"name":"John","age":50}
}
}
class PersonSerializer implements JsonSerializer<Person> {
@Override
public JsonElement serialize(Person person, Type typeOfSrc, JsonSerializationContext context) {
JsonObject jsonObject = new JsonObject();
// নামের প্রথম অক্ষর বড় করে দেয়া
jsonObject.addProperty("name", capitalizeFirstLetter(person.getName()));
// বয়সের মান দুই গুণ করা
jsonObject.addProperty("age", person.getAge() * 2);
return jsonObject;
}
// নামের প্রথম অক্ষর বড় করার জন্য একটি মেথড
private String capitalizeFirstLetter(String name) {
if (name == null || name.isEmpty()) {
return name;
}
return name.substring(0, 1).toUpperCase() + name.substring(1);
}
}
2. কী ঘটছে এখানে?
PersonSerializerক্লাসটিJsonSerializerইন্টারফেস ইমপ্লিমেন্ট করে, যা কাস্টম Serialization-এর জন্য প্রয়োজন।serializeমেথডে আমরাPersonঅবজেক্ট থেকেnameএবংageমান কাস্টমাইজ করছি:- নামের প্রথম অক্ষর বড় করছি।
- বয়সের মান দুই গুণ করছি।
GsonBuilderএর মাধ্যমেregisterTypeAdapterমেথড ব্যবহার করে এই কাস্টম Serializer নিবন্ধন করা হচ্ছে।
3. আউটপুট
{
"name": "John",
"age": 50
}
4. Gson Builder ব্যবহার করে কাস্টম Serialization সেট করা
এই কাস্টম Serialization কনফিগারেশনটি GsonBuilder এর মাধ্যমে করা হয়েছে। আপনি বিভিন্ন ধরনের কাস্টম Serialization এবং Deserialization কোড একত্রে রাখতে পারেন এবং প্রয়োজনে Gson এর মাধ্যমে তাদের ব্যবহার করতে পারেন।
5. অন্য কাস্টম Serialization উদাহরণ
- যদি আপনি চান যে কোন ফিল্ড JSON এ না দেখানো হোক, তাহলে আপনি
@Exposeএবং@SerializedNameঅ্যানোটেশন ব্যবহার করতে পারেন। তবে এই কাস্টম Serialization লাইফসাইকেলে এরকম কন্ট্রোল যুক্ত করা Gson দিয়ে আরো সহজ।
এইভাবে আপনি Gson-এ Serialization কাস্টমাইজ করতে পারেন।
Read more