Jackson-এ @JsonIgnoreProperties অ্যানোটেশন ব্যবহার করে serialization এবং deserialization এর সময় এক বা একাধিক ফিল্ড JSON থেকে বাদ দেওয়া যায়। এটি তখন কার্যকর হয় যখন আপনি মডেল ক্লাসের কিছু ফিল্ড JSON-এ অন্তর্ভুক্ত করতে না চান।
1. @JsonIgnoreProperties এর ব্যবহার
@JsonIgnoreProperties পুরো ক্লাসের লেভেলে নির্দিষ্ট ফিল্ডগুলিকে JSON থেকে বাদ দিতে ব্যবহৃত হয়।
Example:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties({"password", "ssn"})
public class User {
public int id;
public String name;
public String email;
public String password; // Excluded
public String ssn; // Excluded
}
Serialization কোড:
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) throws Exception {
User user = new User();
user.id = 101;
user.name = "John Doe";
user.email = "john.doe@example.com";
user.password = "secret";
user.ssn = "123-45-6789";
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(user);
System.out.println("Serialized JSON: " + json);
}
}
আউটপুট:
{
"id": 101,
"name": "John Doe",
"email": "john.doe@example.com"
}
2. Dynamic Field Exclusion
যদি runtime-এ নির্দিষ্ট ফিল্ড বাদ দিতে চান, তাহলে ObjectMapper কনফিগার করতে পারেন।
Dynamic Example:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
public class Main {
public static void main(String[] args) throws Exception {
User user = new User();
user.id = 101;
user.name = "John Doe";
user.email = "john.doe@example.com";
user.password = "secret";
user.ssn = "123-45-6789";
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
// Exclude specific fields dynamically
objectMapper.addMixIn(User.class, IgnoreFieldsMixin.class);
String json = objectMapper.writeValueAsString(user);
System.out.println("Dynamic Exclusion JSON: " + json);
}
}
@JsonIgnoreProperties({"password", "ssn"})
abstract class IgnoreFieldsMixin {}
আউটপুট:
{
"id": 101,
"name": "John Doe",
"email": "john.doe@example.com"
}
3. @JsonIgnoreProperties এর সাথে Deserialization
Deserialization এর সময় unknown properties এড়ানোর জন্য @JsonIgnoreProperties(ignoreUnknown = true) ব্যবহার করা হয়।
Example:
@JsonIgnoreProperties(ignoreUnknown = true)
public class User {
public int id;
public String name;
public String email;
}
কোড:
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) throws Exception {
String json = """
{
"id": 101,
"name": "John Doe",
"email": "john.doe@example.com",
"extraField": "should be ignored"
}
""";
ObjectMapper objectMapper = new ObjectMapper();
User user = objectMapper.readValue(json, User.class);
System.out.println("Deserialized User: " + user.name);
}
}
আউটপুট:
Deserialized User: John Doe
4. Multiple Field Exclusion Example
Class Definition:
@JsonIgnoreProperties({"password", "ssn", "creditCardNumber"})
public class User {
public int id;
public String name;
public String email;
public String password;
public String ssn;
public String creditCardNumber;
}
Serialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) throws Exception {
User user = new User();
user.id = 101;
user.name = "John Doe";
user.email = "john.doe@example.com";
user.password = "secret";
user.ssn = "123-45-6789";
user.creditCardNumber = "4111-1111-1111-1111";
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(user);
System.out.println("Serialized JSON: " + json);
}
}
আউটপুট:
{
"id": 101,
"name": "John Doe",
"email": "john.doe@example.com"
}
5. Field Exclusion with @JsonIgnore vs @JsonIgnoreProperties
| Feature | @JsonIgnore | @JsonIgnoreProperties |
|---|---|---|
| Scope | Individual fields | Multiple fields (Class level) |
| Serialization Exclusion | Yes | Yes |
| Deserialization Exclusion | Yes | Yes |
| ignoreUnknown Support | No | Yes |
- @JsonIgnoreProperties ক্লাস লেভেলে একাধিক ফিল্ড JSON থেকে বাদ দিতে কার্যকর।
- Dynamic Exclusion এর জন্য
ObjectMapper-এর মিক্সিন ব্যবহার করা যেতে পারে। - Deserialization-এ unknown properties এড়াতে ignoreUnknown ফ্ল্যাগ ব্যবহার করুন।
- যদি ফিল্ড লেভেলে নির্দিষ্ট ফিল্ড বাদ দিতে চান, তাহলে @JsonIgnore ব্যবহার করুন।
এই পদ্ধতিগুলো ব্যবহার করে Jackson এর মাধ্যমে serialization এবং deserialization আরও কাস্টমাইজ করা সম্ভব।
Read more