Gson এর Exclusion Strategy হল একটি কাস্টম কৌশল যা নির্ধারণ করে কোন ফিল্ড বা প্রপার্টি গুলি JSON-এ সিরিয়ালাইজ (serialize) এবং ডেসেরিয়ালাইজ (deserialize) করা হবে না। এটি Gson এর সিরিয়ালাইজেশন এবং ডেসেরিয়ালাইজেশন প্রক্রিয়ায় নির্দিষ্ট ফিল্ড বা প্রপার্টি বাদ দিতে বা এক্সক্লুড করতে ব্যবহার করা হয়।
Exclusion Strategy মূলত ব্যবহৃত হয় যখন আপনি চান না কিছু নির্দিষ্ট ফিল্ড JSON ডেটার মধ্যে অন্তর্ভুক্ত হোক। উদাহরণস্বরূপ, কোনো নিরাপত্তার কারণে কিছু ফিল্ড (যেমন পাসওয়ার্ড) বাদ দেওয়া বা কোনো ফিল্ড যেগুলি আপনার প্রয়োজনে প্রয়োজন নেই, সেগুলি JSON রূপান্তরে বাদ দেওয়া।
Exclusion Strategy এর প্রকারভেদ
Gson এর Exclusion Strategy তে দুটি মূলভাবে ব্যবহৃত পদ্ধতি আছে:
ExclusionStrategyInterface@Exposeঅ্যানোটেশন
1. ExclusionStrategy Interface:
ExclusionStrategy ইন্টারফেস ব্যবহার করে আপনি কাস্টম কৌশল তৈরি করতে পারেন যা নির্ধারণ করবে কোন ফিল্ড JSON সিরিয়ালাইজ এবং ডেসেরিয়ালাইজ করার সময় এক্সক্লুড করা হবে। এটি দুটি মেথড সমর্থন করে:
shouldSkipField(FieldAttributes f): এই মেথডটি নির্ধারণ করে যে একটি নির্দিষ্ট ফিল্ড JSON ডেটার মধ্যে থাকবে কিনা।shouldSkipClass(Class<?> clazz): এই মেথডটি নির্ধারণ করে যে একটি নির্দিষ্ট ক্লাসের জন্য সিরিয়ালাইজেশন বা ডেসেরিয়ালাইজেশন করা হবে কিনা।
ExclusionStrategy ইন্টারফেসের ব্যবহার উদাহরণ:
Java Class (User):
class User {
String name;
int age;
String password;
public User(String name, int age, String password) {
this.name = name;
this.age = age;
this.password = password;
}
}
Custom ExclusionStrategy:
import com.google.gson.*;
import com.google.gson.FieldAttributes;
class PasswordExclusionStrategy implements ExclusionStrategy {
@Override
public boolean shouldSkipField(FieldAttributes f) {
// Skip the 'password' field
return f.getName().equals("password");
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false; // Don't skip any class
}
}
Java Code (Using ExclusionStrategy):
import com.google.gson.*;
public class Main {
public static void main(String[] args) {
User user = new User("Rahim", 30, "secretpassword");
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setExclusionStrategies(new PasswordExclusionStrategy());
Gson gson = gsonBuilder.create();
// Custom Serialization (Excluding 'password' field)
String json = gson.toJson(user);
System.out.println(json);
}
}
আউটপুট:
{"name":"Rahim","age":30}
এখানে password ফিল্ডটি JSON ডেটার মধ্যে অন্তর্ভুক্ত হয়নি, কারণ PasswordExclusionStrategy কাস্টম এক্সক্লুশন কৌশলটি ব্যবহার করা হয়েছে।
2. @Expose অ্যানোটেশন:
Gson-এ @Expose অ্যানোটেশন ব্যবহার করে আপনি নির্দিষ্ট ফিল্ডকে সিরিয়ালাইজ বা ডেসেরিয়ালাইজ করার জন্য এক্সপোজ করতে পারেন। যখন @Expose অ্যানোটেশন ব্যবহার করা হয়, তখন Gson শুধু সেই ফিল্ডগুলোকে সিরিয়ালাইজ করবে যেগুলিতে @Expose অ্যানোটেশন দেওয়া আছে, আর যেগুলিতে দেওয়া নেই, সেগুলিকে এক্সক্লুড করবে।
Java Class (User):
import com.google.gson.annotations.Expose;
class User {
@Expose
String name;
@Expose
int age;
// No @Expose annotation, so it will be excluded from JSON
String password;
public User(String name, int age, String password) {
this.name = name;
this.age = age;
this.password = password;
}
}
Java Code (Using @Expose):
import com.google.gson.*;
import com.google.gson.annotations.Expose;
public class Main {
public static void main(String[] args) {
User user = new User("Rahim", 30, "secretpassword");
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.excludeFieldsWithoutExposeAnnotation(); // Exclude fields without @Expose
Gson gson = gsonBuilder.create();
// Custom Serialization (Only exposed fields will be serialized)
String json = gson.toJson(user);
System.out.println(json);
}
}
আউটপুট:
{"name":"Rahim","age":30}
এখানে password ফিল্ডটি এক্সক্লুড হয়েছে কারণ এতে @Expose অ্যানোটেশন দেওয়া হয়নি।
Exclusion Strategy কেন ব্যবহার করা হয়?
Exclusion Strategy ব্যবহার করার কিছু গুরুত্বপূর্ণ কারণ হলো:
- নিরাপত্তা (Security):
- কিছু ফিল্ড যেমন পাসওয়ার্ড, ক্রেডেনশিয়াল বা সিক্রেট ডেটা কখনোই JSON-এ শেয়ার করা উচিত নয়। এই ফিল্ডগুলিকে এক্সক্লুড করতে Exclusion Strategy ব্যবহার করা হয়।
- পারফরম্যান্স (Performance):
- যদি কোনো অবজেক্টে অনেক বড় বা অপ্রয়োজনীয় ফিল্ড থাকে এবং আপনি শুধুমাত্র নির্দিষ্ট ফিল্ডগুলো JSON-এ পাঠাতে চান, তাহলে Exclusion Strategy ব্যবহার করে সেই ফিল্ডগুলো বাদ দিতে পারেন, যাতে ডেটার আকার ছোট হয়।
- ডেটা কাস্টমাইজেশন (Data Customization):
- কখনো কখনো JSON ডেটা ফরম্যাটটি একটি নির্দিষ্ট কাঠামো অনুসরণ করতে হয়, যেমন API-এর মাধ্যমে ডেটা পাঠানোর সময়। Exclusion Strategy ব্যবহার করে আপনি কাঠামো অনুযায়ী কিছু ফিল্ড বাদ দিতে বা কাস্টমাইজড ডেটা তৈরি করতে পারেন।
- ডেটার বৈধতা (Data Integrity):
- কিছু ক্ষেত্রে আপনি নিশ্চিত করতে চান যে JSON ডেটা কেবল নির্দিষ্ট ফিল্ডগুলো ধারণ করবে, যেমন কোনো ফিল্ডের মান
nullহলে তা এক্সক্লুড করা উচিত। Exclusion Strategy এই ধরনের যাচাইকরণের জন্য ব্যবহৃত হতে পারে।
- কিছু ক্ষেত্রে আপনি নিশ্চিত করতে চান যে JSON ডেটা কেবল নির্দিষ্ট ফিল্ডগুলো ধারণ করবে, যেমন কোনো ফিল্ডের মান
সারাংশ:
- Exclusion Strategy হল Gson-এর একটি কাস্টম কৌশল যা নির্দিষ্ট ফিল্ড বা ক্লাসগুলোকে সিরিয়ালাইজ বা ডেসেরিয়ালাইজ করার সময় এক্সক্লুড করার জন্য ব্যবহার করা হয়।
- এটি
ExclusionStrategyইন্টারফেস এবং@Exposeঅ্যানোটেশন দ্বারা অর্জিত হয়। - এটি নিরাপত্তা, পারফরম্যান্স এবং ডেটা কাস্টমাইজেশন বৃদ্ধি করার জন্য কার্যকরী।
Read more