Gson ব্যবহার করে Sensitive Data Exclusion করতে হলে, আপনি সাধারণত কিছু কৌশল ব্যবহার করেন যাতে গোপন বা সংবেদনশীল তথ্য (যেমন পাসওয়ার্ড, ক্রেডেনশিয়ালস ইত্যাদি) JSON রেসপন্সে প্রকাশ না পায়। Gson কিছু কাস্টমাইজেশন পদ্ধতি সরবরাহ করে যা আপনাকে এই ধরনের তথ্য ফিল্টার করতে সাহায্য করতে পারে।
এখানে কয়েকটি পদ্ধতি দেওয়া হল যেগুলোর মাধ্যমে আপনি Sensitive Data Exclusion করতে পারেন:
1. @Expose অ্যানোটেশন এবং GsonBuilder এর মাধ্যমে Sensitive Data Exclusion
Gson এ @Expose অ্যানোটেশন ব্যবহার করে আপনি স্পেসিফিক ফিল্ডগুলোকে JSON এ এক্সপোজ (প্রকাশ) করতে পারেন, এবং অন্যগুলোকে exclude (অবহেলা) করতে পারেন। এটা বিশেষ করে তখন কাজে আসে যখন আপনি কিছু ফিল্ড বা প্রপার্টি JSON আউটপুটে অন্তর্ভুক্ত করতে চান না।
উদাহরণ:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.Expose;
class User {
@Expose
String username;
@Expose(serialize = false) // Sensitive data (password) will not be included in the JSON output
String password;
@Expose
String email;
public User(String username, String password, String email) {
this.username = username;
this.password = password;
this.email = email;
}
}
public class GsonSensitiveDataExample {
public static void main(String[] args) {
// Create a User object
User user = new User("john_doe", "secret_password", "john.doe@example.com");
// GsonBuilder to include only fields with @Expose annotation
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
// Convert User object to JSON
String json = gson.toJson(user);
System.out.println(json);
}
}
আউটপুট:
{"username":"john_doe","email":"john.doe@example.com"}
ব্যাখ্যা:
@Exposeঅ্যানোটেশন ব্যবহার করা হয়েছেusernameএবংemailফিল্ডে, কিন্তুpasswordফিল্ডে@Expose(serialize = false)ব্যবহার করা হয়েছে, যার মানে হল যে এই ফিল্ডটি JSON আউটপুটে অন্তর্ভুক্ত হবে না।GsonBuilder().excludeFieldsWithoutExposeAnnotation()এর মাধ্যমে আমরা কেবলমাত্র সেই ফিল্ডগুলো JSON এ অন্তর্ভুক্ত করেছি যেগুলোর উপর@Exposeঅ্যানোটেশন ব্যবহার করা হয়েছে।
2. কাস্টম JsonSerializer দিয়ে Sensitive Data Exclusion
আপনি JsonSerializer ইন্টারফেস ব্যবহার করে আরও কাস্টমাইজড ভাবে Sensitive Data ফিল্টার করতে পারেন। এই ক্ষেত্রে, আপনি JSON এর প্রক্রিয়াকরণে কাস্টম লজিক প্রয়োগ করে কিছু ফিল্ড বাদ দিতে পারেন।
উদাহরণ:
import com.google.gson.*;
import java.lang.reflect.Type;
class User {
String username;
String password;
String email;
public User(String username, String password, String email) {
this.username = username;
this.password = password;
this.email = email;
}
}
class UserSerializer implements JsonSerializer<User> {
@Override
public JsonElement serialize(User user, Type typeOfSrc, JsonSerializationContext context) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("username", user.username);
jsonObject.addProperty("email", user.email); // Exclude password
return jsonObject;
}
}
public class GsonCustomSensitiveDataExample {
public static void main(String[] args) {
// Create User object
User user = new User("john_doe", "secret_password", "john.doe@example.com");
// Use GsonBuilder with custom serializer
Gson gson = new GsonBuilder().registerTypeAdapter(User.class, new UserSerializer()).create();
// Convert User object to JSON
String json = gson.toJson(user);
System.out.println(json);
}
}
আউটপুট:
{"username":"john_doe","email":"john.doe@example.com"}
ব্যাখ্যা:
- এই উদাহরণে,
UserSerializerকাস্টমJsonSerializerতৈরি করা হয়েছে যাতেpasswordফিল্ডটি JSON আউটপুট থেকে বাদ পড়ে এবং শুধুমাত্রusernameওemailJSON এ অন্তর্ভুক্ত হয়। GsonBuilderদিয়ে কাস্টমUserSerializerব্যবহার করা হয়েছে JSON রূপান্তরের সময় sensitive data (যেমনpassword) বাদ দেওয়ার জন্য।
3. transient ফিল্ড ব্যবহার করে Sensitive Data Exclusion
Java এর transient কীওয়ার্ড ব্যবহার করে আপনি কিছু ফিল্ডকে Serialization থেকে বাদ দিতে পারেন। Gson এই transient ফিল্ডগুলোকে JSON আউটপুটে অন্তর্ভুক্ত করবে না।
উদাহরণ:
import com.google.gson.Gson;
class User {
String username;
transient String password; // 'password' field will be excluded from JSON serialization
String email;
public User(String username, String password, String email) {
this.username = username;
this.password = password;
this.email = email;
}
}
public class GsonTransientSensitiveDataExample {
public static void main(String[] args) {
// Create a User object
User user = new User("john_doe", "secret_password", "john.doe@example.com");
// Create a Gson object
Gson gson = new Gson();
// Convert User object to JSON
String json = gson.toJson(user);
System.out.println(json);
}
}
আউটপুট:
{"username":"john_doe","email":"john.doe@example.com"}
ব্যাখ্যা:
transientকীওয়ার্ড ব্যবহার করা হয়েছেpasswordফিল্ডের সাথে, তাই Gson এই ফিল্ডটি JSON আউটপুটে অন্তর্ভুক্ত করবে না।@Exposeঅ্যানোটেশন এবংGsonBuilderব্যবহার করে আপনি সহজেই sensitive data ফিল্টার করতে পারেন।JsonSerializerদিয়ে কাস্টম লজিক প্রয়োগ করে আরও উন্নত কাস্টমাইজেশন করা যায়।transientকীওয়ার্ড ব্যবহার করে কিছু ফিল্ডকে JSON থেকে বাদ দেওয়া যায়।
এই পদ্ধতিগুলি ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনে sensitive data নিরাপদ রাখতে পারেন এবং JSON এ শুধুমাত্র প্রয়োজনীয় তথ্য প্রকাশ করতে পারেন।
Read more