@JsonIgnoreProperties দিয়ে multiple ফিল্ড exclude করা

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

288

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
ScopeIndividual fieldsMultiple fields (Class level)
Serialization ExclusionYesYes
Deserialization ExclusionYesYes
ignoreUnknown SupportNoYes

  1. @JsonIgnoreProperties ক্লাস লেভেলে একাধিক ফিল্ড JSON থেকে বাদ দিতে কার্যকর।
  2. Dynamic Exclusion এর জন্য ObjectMapper-এর মিক্সিন ব্যবহার করা যেতে পারে।
  3. Deserialization-এ unknown properties এড়াতে ignoreUnknown ফ্ল্যাগ ব্যবহার করুন।
  4. যদি ফিল্ড লেভেলে নির্দিষ্ট ফিল্ড বাদ দিতে চান, তাহলে @JsonIgnore ব্যবহার করুন।

এই পদ্ধতিগুলো ব্যবহার করে Jackson এর মাধ্যমে serialization এবং deserialization আরও কাস্টমাইজ করা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...