@JsonInclude এবং @JsonSetter এর মাধ্যমে Serialization কাস্টমাইজ করা

Jackson এর Annotations - জ্যাকসন (Jackson) - Java Technologies

295

Jackson একটি জনপ্রিয় Java লাইব্রেরি যা JSON ডেটার Serialization (Java Object থেকে JSON এ রূপান্তর) এবং Deserialization (JSON থেকে Java Object এ রূপান্তর) সহজতর করে। এখানে @JsonInclude এবং @JsonSetter ব্যবহার করে কিভাবে Serialization কাস্টমাইজ করা যায় তা আলোচনা করা হলো।


1. @JsonInclude

@JsonInclude অ্যানোটেশনটি ব্যবহার করা হয় JSON এ কোন কোন প্রোপার্টি অন্তর্ভুক্ত হবে তা নির্ধারণ করতে।

সাধারণ ব্যবহার

import com.fasterxml.jackson.annotation.JsonInclude;

@JsonInclude(JsonInclude.Include.NON_NULL) // null মানের প্রোপার্টি বাদ দেওয়া হবে
public class User {
    private String name;
    private Integer age;

    // Getters and Setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

ব্যাখ্যা

  • JsonInclude.Include.NON_NULL: শুধুমাত্র non-null প্রোপার্টি JSON এ অন্তর্ভুক্ত হবে।
  • অন্যান্য অপশন:
    • ALWAYS: সব প্রোপার্টি অন্তর্ভুক্ত হবে (default)।
    • NON_EMPTY: null বা খালি ভ্যালু বাদ দেওয়া হবে।
    • NON_DEFAULT: শুধুমাত্র non-default মানের প্রোপার্টি অন্তর্ভুক্ত হবে।

উদাহরণ

User user = new User();
user.setName("John");

ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeValueAsString(user);

System.out.println(jsonString); // Output: {"name":"John"}

2. @JsonSetter

@JsonSetter অ্যানোটেশনটি Deserialization এর সময় নির্দিষ্ট প্রোপার্টি সেট করতে কাস্টমাইজড কনফিগারেশন প্রদান করে।

সাধারণ ব্যবহার

import com.fasterxml.jackson.annotation.JsonSetter;

public class User {
    private String name;

    @JsonSetter("user_name") // JSON এর "user_name" ফিল্ড "name" প্রোপার্টিতে সেট হবে
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

ব্যাখ্যা

  • @JsonSetter একটি কাস্টম JSON ফিল্ড ম্যাপ করার জন্য ব্যবহৃত হয়, যা Deserialization এর সময় কাজ করে।

উদাহরণ

String json = "{ \"user_name\": \"Alice\" }";

ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);

System.out.println(user.getName()); // Output: Alice

দুইটি একসাথে ব্যবহার

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonSetter;

@JsonInclude(JsonInclude.Include.NON_EMPTY) // খালি ভ্যালু বাদ
public class User {
    private String name;

    @JsonSetter("user_name") // JSON ফিল্ড ম্যাপ
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

উদাহরণ

String json = "{ \"user_name\": \"Bob\", \"age\": \"\" }";

ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);

System.out.println(user.getName()); // Output: Bob

String serializedJson = mapper.writeValueAsString(user);
System.out.println(serializedJson); // Output: {"name":"Bob"}

  • @JsonInclude ব্যবহার করে আপনি Serialization এর সময় নির্দিষ্ট প্রোপার্টি বাদ দিতে পারেন।
  • @JsonSetter ব্যবহার করে Deserialization এর সময় JSON ফিল্ড এবং Java ফিল্ড এর মধ্যে ম্যাপিং কাস্টমাইজ করতে পারেন।
  • এই অ্যানোটেশনগুলো ডেটা মডেলিং এবং JSON ফর্ম্যাটের উপর নিয়ন্ত্রণ বাড়াতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Content added By
Promotion

Are you sure to start over?

Loading...