@JsonFilter এর ধারণা এবং প্রয়োগ

@JsonFilter এবং Dynamic Filtering - জ্যাকসন অ্যানোটেশন (Jackson Annotations) - Java Technologies

335

@JsonFilter Jackson-এর একটি অ্যানোটেশন, যা JSON Serialization-এর সময় dynamic filtering এর জন্য ব্যবহৃত হয়। এটি বিশেষভাবে উপকারী যখন আপনি একটি Java Object থেকে JSON তৈরি করার সময় নির্দিষ্ট কিছু ফিল্ড বা প্রোপার্টি ফিল্টার করতে চান, তবে ঐ Object এর অন্যান্য ফিল্ডগুলো থাকতে চাই। অর্থাৎ, আপনি কোনো নির্দিষ্ট ফিল্ডকে JSON আউটপুট থেকে অন্তর্ভুক্ত বা বাদ দিতে পারেন।

@JsonFilter অ্যানোটেশনটি একটি filter id যুক্ত করে, যা পরে Jackson ObjectMapper দ্বারা ব্যবহৃত হয়। এই filter-id-এর মাধ্যমে আপনি Jackson ObjectMapper-এ filter সেট করতে পারেন, এবং নির্দিষ্ট ফিল্ডগুলোকে JSON এ অন্তর্ভুক্ত বা বাদ দিতে পারেন।


@JsonFilter এর সাধারণ ব্যবহার

  1. Dynamic Filtering:
    • আপনাকে একটি অবজেক্টের নির্দিষ্ট ফিল্ডের জন্য কাস্টম ফিল্টারিং করতে সাহায্য করে।
  2. 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 এর মূল বৈশিষ্ট্য:

  1. Dynamic Field Inclusion/Exclusion:
    • JSON এর ক্ষেত্রে নির্দিষ্ট ফিল্ড বাদ দেওয়া বা অন্তর্ভুক্ত করা খুব সহজে করা যায়।
  2. Filter Configuration with ObjectMapper:
    • Jackson এর ObjectMapper এবং SimpleFilterProvider ব্যবহার করে ফিল্টার কনফিগার করা হয়।
  3. Flexible Filtering:
    • আপনি একাধিক ফিল্টার কনফিগার করে আলাদা আলাদা ফিল্টারিং পদ্ধতি প্রয়োগ করতে পারেন।

@JsonFilter vs @JsonIgnore / @JsonIgnoreProperties

বৈশিষ্ট্য@JsonFilter@JsonIgnore / @JsonIgnoreProperties
প্রধান উদ্দেশ্যDynamic filtering at runtimeStatic exclusion at compile time
ব্যবহারFilter JSON properties dynamically at runtimeExclude properties from JSON at compile time
ফিল্টারিংয়ের সময়Flexible and dynamic filteringStatic filtering, can't change at runtime
কনফিগারেশনCan be applied via SimpleFilterProviderApplied directly to fields or class

@JsonFilter এর অন্যান্য সুবিধা

  1. JSON ডেটা Filtering:
    • কাস্টম filter ব্যবহার করে JSON এর বিভিন্ন প্রোপার্টি (যেমন: sensitive data) নিরাপদে বাদ দেয়া যায়।
  2. API Compatibility:
    • যখন আপনার API ভিন্ন JSON ফরম্যাট গ্রহণ করে, তখন আপনি সহজেই ডেটা কাস্টমাইজ করতে পারেন।
  3. Performance:
    • বড় JSON ডেটা প্রসেস করার সময় শুধুমাত্র প্রয়োজনীয় ফিল্ডগুলো প্রসেস করে কর্মক্ষমতা বৃদ্ধি করা যায়।

  1. @JsonFilter অ্যানোটেশনটি Jackson এর মধ্যে dynamic field filtering এর জন্য খুবই কার্যকর। এটি JSON ডেটা কাস্টমাইজেশনের জন্য খুবই সুবিধাজনক।
  2. এটি serialization এবং deserialization সময় কাস্টমフィল্টারিং ব্যবস্থা গ্রহণ করতে সাহায্য করে, যেখানে আপনি প্রয়োজনীয় ফিল্ডগুলো অন্তর্ভুক্ত বা বাদ দিতে পারেন।
  3. SimpleFilterProvider এবং SimpleBeanPropertyFilter এর মাধ্যমে Jackson ObjectMapper-এ filter কনফিগার করা যায়, এবং সেক্ষেত্রে বিভিন্ন অবজেক্টের জন্য নির্দিষ্ট ফিল্ড ফিল্টারিং করা সম্ভব হয়।
Content added By
Promotion

Are you sure to start over?

Loading...