Gson-এ JSON Data Manipulation এবং Customization এর মাধ্যমে আপনি JSON ডেটা সেরিয়ালাইজ এবং ডেসিরিয়ালাইজ করতে পারেন, এবং আপনার প্রয়োজন অনুসারে JSON ডেটার মধ্যে কাস্টম পরিবর্তন করতে পারবেন। Gson আপনাকে JSON ডেটা ম্যানিপুলেট করার জন্য বিভিন্ন ধরনের সুবিধা দেয়, যেমন:
- JSON অবজেক্ট তৈরি করা এবং তার সাথে কাজ করা (Creating and manipulating JSON objects)
- Customizing the JSON data (JSON ডেটার কাস্টমাইজেশন)
- Field exclusions and custom naming (ফিল্ড এক্সক্লুশন এবং কাস্টম নামকরণ)
- Complex transformations and handling nested structures (কোমপ্লেক্স ট্রান্সফরমেশন এবং নেস্টেড স্ট্রাকচার হ্যান্ডলিং)
এখানে আমরা বিভিন্ন টেকনিক্যাল বিষয়গুলি বিশদভাবে আলোচনা করবো।
1. JSON অবজেক্ট তৈরি করা এবং তার সাথে কাজ করা
Gson এর সাহায্যে আপনি JSON অবজেক্ট তৈরি করতে এবং JSON ডেটার সাথে ম্যানিপুলেশন করতে পারেন। এটি JsonObject, JsonArray, এবং JsonElement এর মতো ক্লাসের মাধ্যমে করা যায়।
উদাহরণ:
import com.google.gson.*;
public class Main {
public static void main(String[] args) {
// JSON অবজেক্ট তৈরি করা
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("name", "John Doe");
jsonObject.addProperty("age", 30);
// JSON এর মধ্যে আরেকটি অবজেক্ট যোগ করা
JsonObject address = new JsonObject();
address.addProperty("street", "123 Main St");
address.addProperty("city", "New York");
jsonObject.add("address", address);
// JSON ডেটা প্রিন্ট করা
System.out.println(jsonObject.toString());
}
}
আউটপুট:
{"name":"John Doe","age":30,"address":{"street":"123 Main St","city":"New York"}}
এখানে, আমরা একটি JsonObject তৈরি করেছি এবং সেটির মধ্যে ডেটা যোগ করেছি। এর পাশাপাশি, একটি nested JsonObject (address) তৈরি করা হয়েছে এবং মূল jsonObject এর মধ্যে যোগ করা হয়েছে।
2. JSON Data Customization (কাস্টমাইজেশন)
Gson-এ JSON ডেটার কাস্টমাইজেশন করা খুবই সহজ। আপনি নির্দিষ্ট ফিল্ডগুলিকে এক্সক্লুড বা অন্তর্ভুক্ত করতে পারেন, কাস্টম নামকরণ কৌশল ব্যবহার করতে পারেন, এবং ডেটার ফরম্যাট পরিবর্তন করতে পারেন।
উদাহরণ 1: Field Exclusion (এক্সক্লুড করা)
কোনো ফিল্ডকে JSON ডেটায় অন্তর্ভুক্ত না করার জন্য @Expose অ্যানোটেশন এবং excludeFieldsWithoutExposeAnnotation() মেথড ব্যবহার করা হয়।
import com.google.gson.annotations.Expose;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
class Person {
@Expose
private String name;
@Expose(serialize = false, deserialize = false)
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) {
// Gson তৈরি করা
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
// Java Object তৈরি করা
Person person = new Person("John Doe", 30);
// Java Object কে JSON এ কনভার্ট করা
String json = gson.toJson(person);
System.out.println(json); // age ফিল্ডটি এক্সক্লুড হবে
}
}
আউটপুট:
{"name":"John Doe"}
এখানে, age ফিল্ডটি @Expose(serialize = false, deserialize = false) দ্বারা এক্সক্লুড করা হয়েছে, এবং excludeFieldsWithoutExposeAnnotation() দ্বারা শুধু @Expose অ্যানোটেশনযুক্ত ফিল্ডগুলোই JSON এ অন্তর্ভুক্ত হবে।
উদাহরণ 2: Custom Naming Strategy (কাস্টম নামকরণ কৌশল)
আপনি camelCase থেকে snake_case বা অন্য কোনো ফরম্যাটে নাম পরিবর্তন করতে পারেন FieldNamingStrategy ব্যবহার করে।
import com.google.gson.*;
import com.google.gson.FieldNamingStrategy;
import java.lang.reflect.Field;
class SnakeCaseNamingStrategy implements FieldNamingStrategy {
@Override
public String translateName(Field field) {
String name = field.getName();
StringBuilder snakeCaseName = new StringBuilder();
// Convert camelCase to snake_case
for (char c : name.toCharArray()) {
if (Character.isUpperCase(c)) {
snakeCaseName.append('_').append(Character.toLowerCase(c));
} else {
snakeCaseName.append(c);
}
}
return snakeCaseName.toString();
}
}
class Person {
private String firstName;
private String lastName;
public Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
}
public class Main {
public static void main(String[] args) {
// Gson তৈরি করা Custom Field Naming Strategy দিয়ে
Gson gson = new GsonBuilder()
.setFieldNamingStrategy(new SnakeCaseNamingStrategy())
.create();
// Java Object তৈরি করা
Person person = new Person("John", "Doe");
// Java Object কে JSON এ কনভার্ট করা
String json = gson.toJson(person);
System.out.println(json); // first_name এবং last_name হবে JSON এর ফিল্ড
}
}
আউটপুট:
{"first_name":"John","last_name":"Doe"}
এখানে, SnakeCaseNamingStrategy কাস্টম নামকরণ কৌশলটি ব্যবহার করা হয়েছে, যা Java ফিল্ড নামকে snake_case-এ রূপান্তরিত করে।
3. Complex Data Transformation (কোমপ্লেক্স ডেটা রূপান্তর)
Gson দিয়ে আপনি JSON ডেটার মধ্যে complex transformations করতে পারেন যেমন nested structures, collections এবং কাস্টম ট্রান্সফরমেশন।
উদাহরণ 1: Nested JSON Structures
import com.google.gson.*;
class Person {
private String name;
private Address address;
public Person(String name, Address address) {
this.name = name;
this.address = address;
}
public String getName() {
return name;
}
public Address getAddress() {
return address;
}
}
class Address {
private String street;
private String city;
public Address(String street, String city) {
this.street = street;
this.city = city;
}
public String getStreet() {
return street;
}
public String getCity() {
return city;
}
}
public class Main {
public static void main(String[] args) {
Address address = new Address("123 Main St", "New York");
Person person = new Person("John Doe", address);
// Gson তৈরি করা
Gson gson = new Gson();
// Java Object কে JSON এ কনভার্ট করা
String json = gson.toJson(person);
System.out.println(json); // Nested JSON হবে
}
}
আউটপুট:
{"name":"John Doe","address":{"street":"123 Main St","city":"New York"}}
এখানে, Person অবজেক্টের মধ্যে একটি Address অবজেক্ট ইনক্লুড করা হয়েছে, এবং Gson স্বয়ংক্রিয়ভাবে nested JSON তৈরি করেছে।
উদাহরণ 2: Custom JSON Transformation
import com.google.gson.*;
class Person {
private String firstName;
private String lastName;
private int age;
public Person(String firstName, String lastName, int age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public int getAge() {
return age;
}
}
class PersonAdapter implements JsonSerializer<Person> {
@Override
public JsonElement serialize(Person src, Type typeOfSrc, JsonSerializationContext context) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("full_name", src.getFirstName() + " " + src.getLastName());
jsonObject.addProperty("age_in_years", src.getAge());
return jsonObject;
}
}
public class Main {
public static void main(String[] args) {
// Gson তৈরি করা কাস্টম সেরিয়ালাইজার দিয়ে
Gson gson = new GsonBuilder()
.registerTypeAdapter(Person.class, new PersonAdapter())
.create();
Person person = new Person("John", "Doe", 30);
// Java Object কে JSON এ কনভার্ট করা
String json = gson.toJson(person);
System.out.println(json); // Full name এবং age_in_years হবে JSON ফিল্ড
}
}
আউটপুট:
{"full_name":"John Doe","age_in_years":30}
এখানে, আমরা Person ক্লাসের জন্য কাস্টম JsonSerializer ব্যবহার করেছি, যা full_name এবং age_in_years নামক কাস্টম JSON ফিল্ড তৈরি করেছে।
- JSON Data Manipulation এর মাধ্যমে আপনি JSON অবজেক্ট তৈরি করতে, কাস্টম নামকরণ কৌশল প্রয়োগ করতে, এবং JSON ডেটায় পরিবর্তন (customization) করতে পারেন।
- Gson এর সাহায্যে আপনি nested structures, complex data transformations, এবং custom serialization/deserialization ব্যবহার করে JSON ডেটা পরিচালনা করতে পারেন।
Read more