Gson লাইব্রেরি দিয়ে null এবং empty fields (ফাঁকা ফিল্ড) সংক্রান্ত কনফিগারেশন করা যায়। আপনি চাইলে null মান এবং empty ফিল্ডগুলোকে JSON ডেটা থেকে বাদ দিতে বা অন্তর্ভুক্ত করতে পারেন। Gson এ এই ধরনের কনফিগারেশন করতে GsonBuilder ব্যবহার করা হয়।
1. Null মানকে JSON থেকে বাদ দেওয়া:
Gson এর মাধ্যমে null মানকে JSON থেকে বাদ দিতে হলে, GsonBuilder এ serializeNulls() মেথডের পরিবর্তে excludeFieldsWithoutExposeAnnotation() বা null ফিল্ডের জন্য কনফিগারেশন করতে হয়।
উদাহরণ:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
class Person {
String name;
Integer age;
String address;
// Constructor
public Person(String name, Integer age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
}
public class Main {
public static void main(String[] args) {
// GsonBuilder দিয়ে Gson তৈরি করা
Gson gson = new GsonBuilder()
.serializeNulls() // null মানও JSON-এ অন্তর্ভুক্ত হবে
.create();
// Person অবজেক্ট তৈরি
Person person = new Person("John", null, "New York");
// Gson এর মাধ্যমে Person অবজেক্টকে JSON-এ রূপান্তর করা
String json = gson.toJson(person);
// JSON প্রিন্ট করা
System.out.println(json);
}
}
আউটপুট:
{"name":"John","age":null,"address":"New York"}
এখানে serializeNulls() মেথড ব্যবহার করে null ফিল্ডগুলোও JSON এ অন্তর্ভুক্ত করা হয়েছে। তবে, যদি null ফিল্ড বাদ দিতে চান, তাহলে serializeNulls() মেথড ব্যবহার করবেন না।
2. Empty Fields (ফাঁকা ফিল্ড) বাদ দেওয়া:
কখনও কখনও আপনি চাইতে পারেন যে যদি কোনো ফিল্ডের মান empty (খালি স্ট্রিং বা কোনো ভ্যালু না থাকে) থাকে, তাহলে তা JSON ডেটায় অন্তর্ভুক্ত না করা হোক। Gson এর মাধ্যমে এই কনফিগারেশনও করা সম্ভব।
এখানে GsonBuilder এর excludeFieldsWithoutExposeAnnotation() ব্যবহার করা হয় অথবা Gson এর setLenient() ফিচার ব্যবহার করতে পারেন, কিন্তু সাধারণভাবে ফাঁকা মানের ক্ষেত্রে null চেক করা হয় এবং @Expose অ্যানোটেশন ব্যবহার করে ফিল্ডগুলো নির্বাচন করা যায়।
উদাহরণ: Empty Fields বাদ দেওয়া:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
class Person {
String name;
String address;
// Constructor
public Person(String name, String address) {
this.name = name;
this.address = address;
}
}
public class Main {
public static void main(String[] args) {
// GsonBuilder দিয়ে Gson তৈরি করা
Gson gson = new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation() // Expose অ্যানোটেশন ছাড়া ফিল্ডগুলো বাদ দেবে
.create();
// Person অবজেক্ট তৈরি
Person person = new Person("John", "");
// Gson এর মাধ্যমে Person অবজেক্টকে JSON-এ রূপান্তর করা
String json = gson.toJson(person);
// JSON প্রিন্ট করা
System.out.println(json);
}
}
আউটপুট:
{"name":"John"}
এখানে address ফিল্ডে ফাঁকা মান (empty) থাকায় তা JSON-এ অন্তর্ভুক্ত হয়নি।
3. Null এবং Empty Fields বাদ দেওয়া - কোড উদাহরণ:
এখন যদি আপনি চান যে null এবং empty ফিল্ডগুলো JSON থেকে বাদ দেওয়া হোক, তবে আপনি GsonBuilder ব্যবহার করতে পারেন।
উদাহরণ:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
class Person {
String name;
String address;
// Constructor
public Person(String name, String address) {
this.name = name;
this.address = address;
}
}
public class Main {
public static void main(String[] args) {
// GsonBuilder দিয়ে Gson তৈরি করা
Gson gson = new GsonBuilder()
.serializeNulls() // null মানগুলোকে JSON-এ অন্তর্ভুক্ত করবে
.create();
// Person অবজেক্ট তৈরি
Person person = new Person("John", "");
// Gson এর মাধ্যমে Person অবজেক্টকে JSON-এ রূপান্তর করা
String json = gson.toJson(person);
// JSON প্রিন্ট করা
System.out.println(json);
}
}
আউটপুট:
{
"name": "John",
"address": ""
}
এখানে address ফিল্ডটি ফাঁকা থাকায়, তা JSON ডেটায় অন্তর্ভুক্ত হয়েছে, কিন্তু আপনি চাইলে এটা বাদ দেওয়ার জন্য কাস্টম কনভার্টার বা অ্যাপ্লিকেশন লজিক প্রয়োগ করতে পারেন।
4. Gson এর সাথে কাস্টম Serializer ব্যবহার করা:
আপনি কাস্টম Serializer ব্যবহার করে null এবং empty ফিল্ডগুলো অটো বাদ দিতে পারেন।
উদাহরণ:
import com.google.gson.*;
import java.lang.reflect.Type;
class Person {
String name;
String address;
// Constructor
public Person(String name, String address) {
this.name = name;
this.address = address;
}
}
public class Main {
public static void main(String[] args) {
// GsonBuilder দিয়ে Gson তৈরি করা
Gson gson = new GsonBuilder()
.registerTypeAdapter(Person.class, new JsonSerializer<Person>() {
@Override
public JsonElement serialize(Person person, Type typeOfSrc, JsonSerializationContext context) {
JsonObject jsonObject = new JsonObject();
if (person.name != null) {
jsonObject.addProperty("name", person.name);
}
if (person.address != null && !person.address.isEmpty()) {
jsonObject.addProperty("address", person.address);
}
return jsonObject;
}
})
.create();
// Person অবজেক্ট তৈরি
Person person = new Person("John", "");
// Gson এর মাধ্যমে Person অবজেক্টকে JSON-এ রূপান্তর করা
String json = gson.toJson(person);
// JSON প্রিন্ট করা
System.out.println(json);
}
}
আউটপুট:
{"name":"John"}
এখানে, কাস্টম JsonSerializer ব্যবহার করে ফাঁকা (empty) এবং null ফিল্ডগুলো বাদ দেওয়া হয়েছে।
সংক্ষেপে:
serializeNulls(): null ফিল্ডগুলো JSON-এ অন্তর্ভুক্ত করবে।excludeFieldsWithoutExposeAnnotation():@Exposeঅ্যানোটেশন ছাড়া ফিল্ডগুলো বাদ দেবে।- কাস্টম Serializer: কাস্টম লজিক প্রয়োগ করে null বা empty ফিল্ড বাদ দেওয়া যেতে পারে।
এভাবে, Gson-এর মাধ্যমে আপনি null এবং empty ফিল্ডের কনফিগারেশন সহজে নিয়ন্ত্রণ করতে পারেন।
Read more