@JsonFilter Jackson-এর একটি অ্যানোটেশন, যা JSON Serialization-এর সময় dynamic filtering এর জন্য ব্যবহৃত হয়। এটি বিশেষভাবে উপকারী যখন আপনি একটি Java Object থেকে JSON তৈরি করার সময় নির্দিষ্ট কিছু ফিল্ড বা প্রোপার্টি ফিল্টার করতে চান, তবে ঐ Object এর অন্যান্য ফিল্ডগুলো থাকতে চাই। অর্থাৎ, আপনি কোনো নির্দিষ্ট ফিল্ডকে JSON আউটপুট থেকে অন্তর্ভুক্ত বা বাদ দিতে পারেন।
@JsonFilter অ্যানোটেশনটি একটি filter id যুক্ত করে, যা পরে Jackson ObjectMapper দ্বারা ব্যবহৃত হয়। এই filter-id-এর মাধ্যমে আপনি Jackson ObjectMapper-এ filter সেট করতে পারেন, এবং নির্দিষ্ট ফিল্ডগুলোকে JSON এ অন্তর্ভুক্ত বা বাদ দিতে পারেন।
@JsonFilter এর সাধারণ ব্যবহার
- Dynamic Filtering:
- আপনাকে একটি অবজেক্টের নির্দিষ্ট ফিল্ডের জন্য কাস্টম ফিল্টারিং করতে সাহায্য করে।
- Filter Configuration:
- Jackson ObjectMapper-এর মাধ্যমে Filter ID সেট করা হয় এবং নির্দিষ্ট ফিল্ডগুলো অন্তর্ভুক্ত বা বাদ দেওয়ার জন্য ফিল্টার অ্যাপ্লাই করা হয়।
@JsonFilter এর উদাহরণ
১. @JsonFilter এর মাধ্যমে dynamic filtering
Step 1: প্রথমে একটি Java ক্লাসে @JsonFilter অ্যানোটেশন যুক্ত করুন।
import com.fasterxml.jackson.annotation.JsonFilter;
@JsonFilter("myFilter")
public class User {
private int id;
private String name;
private String email;
// Constructor
public User(int id, String name, String email) {
this.id = id;
this.name = name;
this.email = email;
}
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Step 2: ObjectMapper-এ filter-টি কনফিগার করুন এবং ফিল্টারিং অ্যাপ্লাই করুন।
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
public class JsonFilterExample {
public static void main(String[] args) throws Exception {
// Sample User Object
User user = new User(1, "Rahim", "rahim@example.com");
// ObjectMapper তৈরি
ObjectMapper mapper = new ObjectMapper();
// Filter Provider তৈরি এবং Filter ID অ্যাসাইন করা
SimpleFilterProvider filters = new SimpleFilterProvider();
filters.addFilter("myFilter", SimpleBeanPropertyFilter.filterOutAllExcept("id", "name"));
// Filter অ্যাপ্লাই করা
String json = mapper.writer(filters).writeValueAsString(user);
System.out.println("Filtered JSON: " + json);
}
}
Output:
{
"id": 1,
"name": "Rahim"
}
এখানে, @JsonFilter("myFilter") ব্যবহৃত হয়েছে। ObjectMapper-এ filter applied হয়েছে, যা শুধু id এবং name ফিল্ড JSON আউটপুটে অন্তর্ভুক্ত করবে, এবং email ফিল্ড বাদ দেয়া হয়েছে।
@JsonFilter এর মূল বৈশিষ্ট্য:
- Dynamic Field Inclusion/Exclusion:
- JSON এর ক্ষেত্রে নির্দিষ্ট ফিল্ড বাদ দেওয়া বা অন্তর্ভুক্ত করা খুব সহজে করা যায়।
- Filter Configuration with ObjectMapper:
- Jackson এর
ObjectMapperএবংSimpleFilterProviderব্যবহার করে ফিল্টার কনফিগার করা হয়।
- Jackson এর
- Flexible Filtering:
- আপনি একাধিক ফিল্টার কনফিগার করে আলাদা আলাদা ফিল্টারিং পদ্ধতি প্রয়োগ করতে পারেন।
@JsonFilter vs @JsonIgnore / @JsonIgnoreProperties
| বৈশিষ্ট্য | @JsonFilter | @JsonIgnore / @JsonIgnoreProperties |
|---|---|---|
| প্রধান উদ্দেশ্য | Dynamic filtering at runtime | Static exclusion at compile time |
| ব্যবহার | Filter JSON properties dynamically at runtime | Exclude properties from JSON at compile time |
| ফিল্টারিংয়ের সময় | Flexible and dynamic filtering | Static filtering, can't change at runtime |
| কনফিগারেশন | Can be applied via SimpleFilterProvider | Applied directly to fields or class |
@JsonFilter এর অন্যান্য সুবিধা
- JSON ডেটা Filtering:
- কাস্টম filter ব্যবহার করে JSON এর বিভিন্ন প্রোপার্টি (যেমন: sensitive data) নিরাপদে বাদ দেয়া যায়।
- API Compatibility:
- যখন আপনার API ভিন্ন JSON ফরম্যাট গ্রহণ করে, তখন আপনি সহজেই ডেটা কাস্টমাইজ করতে পারেন।
- Performance:
- বড় JSON ডেটা প্রসেস করার সময় শুধুমাত্র প্রয়োজনীয় ফিল্ডগুলো প্রসেস করে কর্মক্ষমতা বৃদ্ধি করা যায়।
@JsonFilterঅ্যানোটেশনটি Jackson এর মধ্যে dynamic field filtering এর জন্য খুবই কার্যকর। এটি JSON ডেটা কাস্টমাইজেশনের জন্য খুবই সুবিধাজনক।- এটি serialization এবং deserialization সময় কাস্টমフィল্টারিং ব্যবস্থা গ্রহণ করতে সাহায্য করে, যেখানে আপনি প্রয়োজনীয় ফিল্ডগুলো অন্তর্ভুক্ত বা বাদ দিতে পারেন।
- SimpleFilterProvider এবং SimpleBeanPropertyFilter এর মাধ্যমে Jackson ObjectMapper-এ filter কনফিগার করা যায়, এবং সেক্ষেত্রে বিভিন্ন অবজেক্টের জন্য নির্দিষ্ট ফিল্ড ফিল্টারিং করা সম্ভব হয়।
Read more