Jackson এর @JsonIgnore অ্যানোটেশন ব্যবহার করে নির্দিষ্ট ফিল্ড JSON Serialization এবং Deserialization এর সময় উপেক্ষা করা যায়। এটি এমন ক্ষেত্রগুলোর জন্য উপযোগী, যেগুলো JSON আউটপুটে থাকা উচিত নয় অথবা ইনপুট হিসেবে ব্যবহার করা উচিত নয়।
@JsonIgnore এর ব্যবহার
১. মডেল ক্লাস তৈরি
import com.fasterxml.jackson.annotation.JsonIgnore;
public class User {
private String name;
private int age;
@JsonIgnore // এই ফিল্ডটি JSON থেকে বাদ যাবে
private String password;
// Getters and Setters
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;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
২. Serialization (Java Object থেকে JSON)
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonIgnoreExample {
public static void main(String[] args) throws Exception {
// User Object তৈরি
User user = new User();
user.setName("Alice");
user.setAge(30);
user.setPassword("secret123");
// ObjectMapper ব্যবহার করে JSON তৈরি
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(user);
System.out.println("Serialized JSON: " + json);
}
}
Output:
{"name":"Alice","age":30}
ব্যাখ্যা:
passwordফিল্ডে@JsonIgnoreঅ্যাপ্লাই করা হয়েছে, তাই এটি JSON আউটপুটে অন্তর্ভুক্ত হয়নি।
৩. Deserialization (JSON থেকে Java Object)
public class JsonIgnoreDeserializationExample {
public static void main(String[] args) throws Exception {
String json = "{\"name\":\"Bob\",\"age\":25,\"password\":\"shouldBeIgnored\"}";
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);
System.out.println("Name: " + user.getName());
System.out.println("Age: " + user.getAge());
System.out.println("Password: " + user.getPassword()); // null থাকবে
}
}
Output:
Name: Bob
Age: 25
Password: null
ব্যাখ্যা:
- JSON-এ
passwordফিল্ড উপস্থিত থাকলেও এটি@JsonIgnoreএর কারণেUserঅবজেক্টে সেট হয়নি।
@JsonIgnore এবং @JsonProperty একত্রে ব্যবহার
কখনও কখনও আপনি JSON থেকে ফিল্ড বাদ দিতে চান, কিন্তু Deserialization এর সময় এটি সেট করতে চান। এ জন্য @JsonProperty ব্যবহার করা যেতে পারে।
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
public class User {
private String name;
@JsonIgnore
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY) // শুধুমাত্র Deserialization এর জন্য অনুমোদিত
private String password;
// Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Serialization Output:
{
"name": "Alice"
}
Deserialization Input:
{
"name": "Bob",
"password": "securePassword"
}
Deserialized Object:
Name: Bob
Password: securePassword
@JsonIgnore এর সীমাবদ্ধতা
@JsonIgnoreফিল্ডে শুধুSerializationএবংDeserializationএর সময় কাজ করে।- যদি কোনো ফিল্ড সম্পূর্ণভাবে Exclude করার প্রয়োজন হয়, তবে
@JsonIgnorePropertiesব্যবহার করতে পারেন।
@JsonIgnoreProperties ব্যবহার
মাল্টিপল ফিল্ড Exclude করার জন্য:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties({"password", "email"}) // একাধিক ফিল্ড বাদ দেওয়া
public class User {
private String name;
private int age;
private String password;
private String email;
// Getters and Setters
}
@JsonIgnoreব্যবহার করে নির্দিষ্ট ফিল্ড JSON আউটপুট বা ইনপুট থেকে বাদ দেওয়া যায়।- Serialization: JSON এ শুধুমাত্র প্রয়োজনীয় ডেটা প্রকাশ করা যায়।
- Deserialization: অপ্রয়োজনীয় বা সংবেদনশীল ডেটা সেট হওয়া এড়ানো যায়।
- আরও ফাইন-গ্রেইন কন্ট্রোল প্রয়োজন হলে
@JsonPropertyএবং@JsonIgnorePropertiesব্যবহার করা যেতে পারে।
Content added By
Read more