Skill

জ্যাকসন অ্যানোটেশন (Jackson Annotations)

483

Jackson Annotations হলো Jackson লাইব্রেরির অংশ, যা Java প্রোগ্রামিং ভাষায় JSON ডেটা নিয়ে কাজ করার জন্য ব্যবহৃত হয়। Jackson একটি ওপেন সোর্স লাইব্রেরি, যা Java Object থেকে JSON এবং JSON থেকে Java Objectকনভারশন করতে ব্যবহৃত হয়। এই কনভারশনকে আরও সহজ এবং কাস্টমাইজড করতে Jackson Annotations ব্যবহার করা হয়।

Jackson Annotations এর মাধ্যমে ডেভেলপাররা Java Object এর ফিল্ড, প্রোপার্টিজ, মেথড ইত্যাদি কিভাবে JSON এ কনভার্ট হবে তা নির্ধারণ, নিয়ন্ত্রণ, এবং পরিবর্তন করতে পারেন। এটি বিভিন্ন অ্যাপ্লিকেশনে ডেটা সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন প্রক্রিয়াকে সহজ করে তোলে।


Jackson Annotations: একটি বিস্তারিত বাংলা টিউটোরিয়াল

ভূমিকা

Jackson হলো একটি জনপ্রিয় Java লাইব্রেরি, যা মূলত JSON ডেটা পার্সিং এবং সিরিয়ালাইজেশন (Serialization) এর জন্য ব্যবহৃত হয়। Jackson ডেটা মডেল এবং Java অবজেক্টের মধ্যে JSON ডেটা রূপান্তর করতে অত্যন্ত কার্যকরী। Jackson Annotations হলো এমন কিছু Java annotations, যা আপনাকে Java অবজেক্ট এবং JSON ডেটার মধ্যে রূপান্তরের নিয়ন্ত্রণ দিতে সাহায্য করে।

Jackson Annotations ব্যবহার করে আপনি খুব সহজে JSON সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশনের কাস্টম নিয়ম নির্ধারণ করতে পারেন। এই টিউটোরিয়ালে, আমরা Jackson Annotations এর বিভিন্ন ধরন এবং তাদের ব্যবহার নিয়ে আলোচনা করব।

Jackson Annotations এর ধরন

Jackson এর প্রধান কিছু annotations হলো:

  1. @JsonProperty: JSON ফিল্ডের নাম নির্ধারণ করে।
  2. @JsonIgnore: একটি ফিল্ডকে সিরিয়ালাইজেশন বা ডেসিরিয়ালাইজেশন থেকে বাদ দেয়।
  3. @JsonInclude: শুধুমাত্র নির্দিষ্ট শর্তে ফিল্ডকে সিরিয়ালাইজ করে।
  4. @JsonFormat: একটি ফিল্ডের ফরম্যাট নির্ধারণ করে (যেমন তারিখ বা সময়ের ফরম্যাট)।
  5. @JsonCreator: ডেসিরিয়ালাইজেশন সময়ে কাস্টম কনস্ট্রাক্টর ব্যবহার করতে দেয়।
  6. @JsonIgnoreProperties: এক বা একাধিক ফিল্ডকে ডেসিরিয়ালাইজেশনে উপেক্ষা করে।
  7. @JsonSetter: একটি JSON ফিল্ডের জন্য সেটার মেথড নির্ধারণ করে।
  8. @JsonAnyGetter: কাস্টম কী-ভ্যালু পেয়ার JSON সিরিয়ালাইজেশনের সময় ব্যবহৃত হয়।
  9. @JsonAnySetter: কাস্টম কী-ভ্যালু পেয়ার ডেসিরিয়ালাইজেশনের সময় ব্যবহৃত হয়।

Jackson Annotations ব্যবহার করা

নিচে Jackson Annotations এর ব্যবহার নিয়ে বিস্তারিত উদাহরণ দেওয়া হলো:

১. @JsonProperty

@JsonProperty ব্যবহার করে আপনি JSON এর ফিল্ডের নাম নির্ধারণ করতে পারেন। উদাহরণস্বরূপ:

import com.fasterxml.jackson.annotation.JsonProperty;

public class Person {
    @JsonProperty("full_name")
    private String name;

    @JsonProperty("age_in_years")
    private int age;

    // কনস্ট্রাক্টর
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // গেটার এবং সেটার মেথড
    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

উপরের উদাহরণে, আমরা @JsonProperty ব্যবহার করে JSON ফিল্ডের নাম কাস্টমাইজ করেছি। JSON এর জন্য "full_name" এবং "age_in_years" নামে ফিল্ড তৈরি হবে, যদিও Java ক্লাসে তাদের নাম name এবং age

JSON আউটপুট:

{
  "full_name": "John Doe",
  "age_in_years": 30
}

২. @JsonIgnore

@JsonIgnore ব্যবহার করে আপনি কোনো নির্দিষ্ট ফিল্ডকে JSON সিরিয়ালাইজেশন বা ডেসিরিয়ালাইজেশন থেকে বাদ দিতে পারেন:

import com.fasterxml.jackson.annotation.JsonIgnore;

public class Employee {
    private String name;

    @JsonIgnore
    private double salary;

    public Employee(String name, double salary) {
        this.name = name;
        this.salary = salary;
    }

    // গেটার এবং সেটার মেথড
    public String getName() {
        return name;
    }

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

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}

এই উদাহরণে, @JsonIgnore ব্যবহার করে আমরা salary ফিল্ডকে JSON আউটপুট থেকে বাদ দিয়েছি।

JSON আউটপুট:

{
  "name": "Jane Doe"
}

৩. @JsonInclude

@JsonInclude ব্যবহার করে আপনি নির্দিষ্ট শর্তে একটি ফিল্ডকে JSON সিরিয়ালাইজ করতে পারেন। উদাহরণ:

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

public class Product {
    private String name;

    @JsonInclude(Include.NON_NULL)
    private String description;

    public Product(String name, String description) {
        this.name = name;
        this.description = description;
    }

    // গেটার এবং সেটার মেথড
    public String getName() {
        return name;
    }

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

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

উপরের উদাহরণে, @JsonInclude(Include.NON_NULL) ব্যবহার করে description ফিল্ড কেবল তখনই সিরিয়ালাইজ হবে, যখন এর মান null না হয়।

JSON আউটপুট (description=null):

{
  "name": "Laptop"
}

JSON আউটপুট (description="A powerful laptop"):

{
  "name": "Laptop",
  "description": "A powerful laptop"
}

৪. @JsonFormat

@JsonFormat ব্যবহার করে আপনি ডেটা ফিল্ডের ফরম্যাট নির্ধারণ করতে পারেন। এটি মূলত Date এবং Time ফিল্ডের জন্য ব্যবহার করা হয়:

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;

public class Event {
    private String name;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
    private Date eventDate;

    public Event(String name, Date eventDate) {
        this.name = name;
        this.eventDate = eventDate;
    }

    // গেটার এবং সেটার মেথড
    public String getName() {
        return name;
    }

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

    public Date getEventDate() {
        return eventDate;
    }

    public void setEventDate(Date eventDate) {
        this.eventDate = eventDate;
    }
}

উপরের উদাহরণে, @JsonFormat ব্যবহার করে eventDate ফিল্ডটি dd-MM-yyyy ফরম্যাটে আউটপুট হবে।

JSON আউটপুট:

{
  "name": "Conference",
  "eventDate": "15-12-2023"
}

৫. @JsonCreator

@JsonCreator ব্যবহার করে আপনি ডেসিরিয়ালাইজেশনের সময় একটি কাস্টম কনস্ট্রাক্টর ব্যবহার করতে পারেন। উদাহরণ:

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

public class User {
    private String name;
    private int age;

    @JsonCreator
    public User(@JsonProperty("name") String name, @JsonProperty("age") int age) {
        this.name = name;
        this.age = age;
    }

    // গেটার মেথড
    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

এই উদাহরণে, @JsonCreator ব্যবহার করে কাস্টম কনস্ট্রাক্টরের মাধ্যমে ডেসিরিয়ালাইজেশন করা হয়েছে।

JSON ইনপুট:

{
  "name": "John",
  "age": 25
}

৬. @JsonIgnoreProperties

@JsonIgnoreProperties ব্যবহার করে একাধিক ফিল্ডকে ডেসিরিয়ালাইজেশন থেকে উপেক্ষা করা যায়:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties({"address", "phoneNumber"})
public class Customer {
    private String name;
    private String address;
    private String phoneNumber;

    public Customer(String name, String address, String phoneNumber) {
        this.name = name;
        this.address = address;
        this.phoneNumber = phoneNumber;
    }

    // গেটার এবং সেটার মেথড
    public String getName() {
        return name;
    }

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

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
}

এই উদাহরণে, address এবং phoneNumber ফিল্ডগুলোকে ডেসিরিয়ালাইজেশনে উপেক্ষা করা হবে।

JSON ইনপুট:

{
  "name": "David",
  "address": "123 Street",
  "phoneNumber": "1234567890"
}

JSON আউটপুট:

{
  "name": "David"
}

উপসংহার

Jackson Annotations Java অবজেক্ট এবং JSON এর মধ্যে ডেটা সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন প্রক্রিয়াকে খুবই সহজ এবং কাস্টমাইজযোগ্য করে তোলে। @JsonProperty, @JsonIgnore, @JsonInclude, এবং অন্যান্য অ্যানোটেশনের মাধ্যমে আপনি খুব সহজে JSON ডেটার সাথে কাস্টম নিয়ম তৈরি করতে পারেন। Jackson Annotations ব্যবহার করে ডেভেলপাররা কোডকে আরও পরিষ্কার এবং কার্যকরী করতে পারে, এবং ডেটা ট্রান্সফরমেশনের নিয়ন্ত্রণ আরও ভালোভাবে করতে পারে।

Jackson Annotations হলো Jackson লাইব্রেরির অংশ, যা Java প্রোগ্রামিং ভাষায় JSON ডেটা নিয়ে কাজ করার জন্য ব্যবহৃত হয়। Jackson একটি ওপেন সোর্স লাইব্রেরি, যা Java Object থেকে JSON এবং JSON থেকে Java Objectকনভারশন করতে ব্যবহৃত হয়। এই কনভারশনকে আরও সহজ এবং কাস্টমাইজড করতে Jackson Annotations ব্যবহার করা হয়।

Jackson Annotations এর মাধ্যমে ডেভেলপাররা Java Object এর ফিল্ড, প্রোপার্টিজ, মেথড ইত্যাদি কিভাবে JSON এ কনভার্ট হবে তা নির্ধারণ, নিয়ন্ত্রণ, এবং পরিবর্তন করতে পারেন। এটি বিভিন্ন অ্যাপ্লিকেশনে ডেটা সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন প্রক্রিয়াকে সহজ করে তোলে।


Jackson Annotations: একটি বিস্তারিত বাংলা টিউটোরিয়াল

ভূমিকা

Jackson হলো একটি জনপ্রিয় Java লাইব্রেরি, যা মূলত JSON ডেটা পার্সিং এবং সিরিয়ালাইজেশন (Serialization) এর জন্য ব্যবহৃত হয়। Jackson ডেটা মডেল এবং Java অবজেক্টের মধ্যে JSON ডেটা রূপান্তর করতে অত্যন্ত কার্যকরী। Jackson Annotations হলো এমন কিছু Java annotations, যা আপনাকে Java অবজেক্ট এবং JSON ডেটার মধ্যে রূপান্তরের নিয়ন্ত্রণ দিতে সাহায্য করে।

Jackson Annotations ব্যবহার করে আপনি খুব সহজে JSON সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশনের কাস্টম নিয়ম নির্ধারণ করতে পারেন। এই টিউটোরিয়ালে, আমরা Jackson Annotations এর বিভিন্ন ধরন এবং তাদের ব্যবহার নিয়ে আলোচনা করব।

Jackson Annotations এর ধরন

Jackson এর প্রধান কিছু annotations হলো:

  1. @JsonProperty: JSON ফিল্ডের নাম নির্ধারণ করে।
  2. @JsonIgnore: একটি ফিল্ডকে সিরিয়ালাইজেশন বা ডেসিরিয়ালাইজেশন থেকে বাদ দেয়।
  3. @JsonInclude: শুধুমাত্র নির্দিষ্ট শর্তে ফিল্ডকে সিরিয়ালাইজ করে।
  4. @JsonFormat: একটি ফিল্ডের ফরম্যাট নির্ধারণ করে (যেমন তারিখ বা সময়ের ফরম্যাট)।
  5. @JsonCreator: ডেসিরিয়ালাইজেশন সময়ে কাস্টম কনস্ট্রাক্টর ব্যবহার করতে দেয়।
  6. @JsonIgnoreProperties: এক বা একাধিক ফিল্ডকে ডেসিরিয়ালাইজেশনে উপেক্ষা করে।
  7. @JsonSetter: একটি JSON ফিল্ডের জন্য সেটার মেথড নির্ধারণ করে।
  8. @JsonAnyGetter: কাস্টম কী-ভ্যালু পেয়ার JSON সিরিয়ালাইজেশনের সময় ব্যবহৃত হয়।
  9. @JsonAnySetter: কাস্টম কী-ভ্যালু পেয়ার ডেসিরিয়ালাইজেশনের সময় ব্যবহৃত হয়।

Jackson Annotations ব্যবহার করা

নিচে Jackson Annotations এর ব্যবহার নিয়ে বিস্তারিত উদাহরণ দেওয়া হলো:

১. @JsonProperty

@JsonProperty ব্যবহার করে আপনি JSON এর ফিল্ডের নাম নির্ধারণ করতে পারেন। উদাহরণস্বরূপ:

import com.fasterxml.jackson.annotation.JsonProperty;

public class Person {
    @JsonProperty("full_name")
    private String name;

    @JsonProperty("age_in_years")
    private int age;

    // কনস্ট্রাক্টর
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // গেটার এবং সেটার মেথড
    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

উপরের উদাহরণে, আমরা @JsonProperty ব্যবহার করে JSON ফিল্ডের নাম কাস্টমাইজ করেছি। JSON এর জন্য "full_name" এবং "age_in_years" নামে ফিল্ড তৈরি হবে, যদিও Java ক্লাসে তাদের নাম name এবং age

JSON আউটপুট:

{
  "full_name": "John Doe",
  "age_in_years": 30
}

২. @JsonIgnore

@JsonIgnore ব্যবহার করে আপনি কোনো নির্দিষ্ট ফিল্ডকে JSON সিরিয়ালাইজেশন বা ডেসিরিয়ালাইজেশন থেকে বাদ দিতে পারেন:

import com.fasterxml.jackson.annotation.JsonIgnore;

public class Employee {
    private String name;

    @JsonIgnore
    private double salary;

    public Employee(String name, double salary) {
        this.name = name;
        this.salary = salary;
    }

    // গেটার এবং সেটার মেথড
    public String getName() {
        return name;
    }

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

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}

এই উদাহরণে, @JsonIgnore ব্যবহার করে আমরা salary ফিল্ডকে JSON আউটপুট থেকে বাদ দিয়েছি।

JSON আউটপুট:

{
  "name": "Jane Doe"
}

৩. @JsonInclude

@JsonInclude ব্যবহার করে আপনি নির্দিষ্ট শর্তে একটি ফিল্ডকে JSON সিরিয়ালাইজ করতে পারেন। উদাহরণ:

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

public class Product {
    private String name;

    @JsonInclude(Include.NON_NULL)
    private String description;

    public Product(String name, String description) {
        this.name = name;
        this.description = description;
    }

    // গেটার এবং সেটার মেথড
    public String getName() {
        return name;
    }

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

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

উপরের উদাহরণে, @JsonInclude(Include.NON_NULL) ব্যবহার করে description ফিল্ড কেবল তখনই সিরিয়ালাইজ হবে, যখন এর মান null না হয়।

JSON আউটপুট (description=null):

{
  "name": "Laptop"
}

JSON আউটপুট (description="A powerful laptop"):

{
  "name": "Laptop",
  "description": "A powerful laptop"
}

৪. @JsonFormat

@JsonFormat ব্যবহার করে আপনি ডেটা ফিল্ডের ফরম্যাট নির্ধারণ করতে পারেন। এটি মূলত Date এবং Time ফিল্ডের জন্য ব্যবহার করা হয়:

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;

public class Event {
    private String name;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
    private Date eventDate;

    public Event(String name, Date eventDate) {
        this.name = name;
        this.eventDate = eventDate;
    }

    // গেটার এবং সেটার মেথড
    public String getName() {
        return name;
    }

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

    public Date getEventDate() {
        return eventDate;
    }

    public void setEventDate(Date eventDate) {
        this.eventDate = eventDate;
    }
}

উপরের উদাহরণে, @JsonFormat ব্যবহার করে eventDate ফিল্ডটি dd-MM-yyyy ফরম্যাটে আউটপুট হবে।

JSON আউটপুট:

{
  "name": "Conference",
  "eventDate": "15-12-2023"
}

৫. @JsonCreator

@JsonCreator ব্যবহার করে আপনি ডেসিরিয়ালাইজেশনের সময় একটি কাস্টম কনস্ট্রাক্টর ব্যবহার করতে পারেন। উদাহরণ:

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

public class User {
    private String name;
    private int age;

    @JsonCreator
    public User(@JsonProperty("name") String name, @JsonProperty("age") int age) {
        this.name = name;
        this.age = age;
    }

    // গেটার মেথড
    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

এই উদাহরণে, @JsonCreator ব্যবহার করে কাস্টম কনস্ট্রাক্টরের মাধ্যমে ডেসিরিয়ালাইজেশন করা হয়েছে।

JSON ইনপুট:

{
  "name": "John",
  "age": 25
}

৬. @JsonIgnoreProperties

@JsonIgnoreProperties ব্যবহার করে একাধিক ফিল্ডকে ডেসিরিয়ালাইজেশন থেকে উপেক্ষা করা যায়:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties({"address", "phoneNumber"})
public class Customer {
    private String name;
    private String address;
    private String phoneNumber;

    public Customer(String name, String address, String phoneNumber) {
        this.name = name;
        this.address = address;
        this.phoneNumber = phoneNumber;
    }

    // গেটার এবং সেটার মেথড
    public String getName() {
        return name;
    }

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

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
}

এই উদাহরণে, address এবং phoneNumber ফিল্ডগুলোকে ডেসিরিয়ালাইজেশনে উপেক্ষা করা হবে।

JSON ইনপুট:

{
  "name": "David",
  "address": "123 Street",
  "phoneNumber": "1234567890"
}

JSON আউটপুট:

{
  "name": "David"
}

উপসংহার

Jackson Annotations Java অবজেক্ট এবং JSON এর মধ্যে ডেটা সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন প্রক্রিয়াকে খুবই সহজ এবং কাস্টমাইজযোগ্য করে তোলে। @JsonProperty, @JsonIgnore, @JsonInclude, এবং অন্যান্য অ্যানোটেশনের মাধ্যমে আপনি খুব সহজে JSON ডেটার সাথে কাস্টম নিয়ম তৈরি করতে পারেন। Jackson Annotations ব্যবহার করে ডেভেলপাররা কোডকে আরও পরিষ্কার এবং কার্যকরী করতে পারে, এবং ডেটা ট্রান্সফরমেশনের নিয়ন্ত্রণ আরও ভালোভাবে করতে পারে।

Promotion

Are you sure to start over?

Loading...