ObjectMapper এর মাধ্যমে Java Object থেকে JSON এ কনভার্ট করা (Serialization)

Jackson এর ObjectMapper ব্যবহার - জ্যাকসন (Jackson) - Java Technologies

332

Jackson একটি জনপ্রিয় Java library যা JSON ডেটার সাথে কাজ করার জন্য ব্যবহৃত হয়। Jackson এর ObjectMapper ক্লাসটি Java objects কে JSON ফরম্যাটে রূপান্তর (Serialization) এবং JSON কে Java objects তে রূপান্তর (Deserialization) করতে ব্যবহৃত হয়। আজকের আলোচনা হবে ObjectMapper ব্যবহার করে Java Object থেকে JSON এ কনভার্ট করার (Serialization) প্রক্রিয়া সম্পর্কে।


1. Jackson ObjectMapper Overview

ObjectMapper হল Jackson লাইব্রেরির একটি ক্লাস যা JSON ডেটা প্রসেস করার জন্য ব্যবহৃত হয়। এটি JSON থেকে Java object তৈরি করতে (Deserialization) এবং Java object থেকে JSON তৈরি করতে (Serialization) ব্যবহৃত হয়।

Jackson এ Serialization মানে হল একটি Java object কে JSON string এ রূপান্তর করা। এটি সাধারণত একটি ফাইল, ডাটাবেস, অথবা নেটওয়ার্কে JSON ডেটা পাঠানোর জন্য ব্যবহৃত হয়।


2. Java Object to JSON Conversion (Serialization)

Jackson এর ObjectMapper ক্লাস ব্যবহার করে Java Object কে JSON এ রূপান্তর (Serialization) করার একটি সাধারণ প্রক্রিয়া দেখব।

Step 1: Jackson Dependency (Maven) Setup

প্রথমে আপনাকে আপনার প্রোজেক্টে Jackson লাইব্রেরি যোগ করতে হবে। যদি আপনার প্রোজেক্ট Maven ব্যবহার করে, তবে pom.xml ফাইলে Jackson এর ডিপেনডেন্সি যোগ করুন:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.5</version> <!-- latest version -->
</dependency>

Step 2: Java Object Definition

ধরা যাক, আমাদের একটি Person ক্লাস আছে যেটি একটি Java object। এটি name এবং age ফিল্ড ধারণ করে।

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

    // Constructor
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Getters and setters
    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;
    }
}

Step 3: ObjectMapper দিয়ে Serialization (Java Object থেকে JSON)

ObjectMapper এর মাধ্যমে Person অবজেক্টকে JSON String এ কনভার্ট করার জন্য নিচের কোডটি ব্যবহার করা যেতে পারে।

import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
    public static void main(String[] args) {
        try {
            // Create an instance of the Person class
            Person person = new Person("John", 30);

            // Create an ObjectMapper instance
            ObjectMapper objectMapper = new ObjectMapper();

            // Serialize Java object to JSON string
            String jsonString = objectMapper.writeValueAsString(person);

            // Print the JSON string
            System.out.println(jsonString);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Output:

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

এখানে, ObjectMapper ক্লাসের writeValueAsString() মেথডটি Java object (এখানে Person অবজেক্ট) কে JSON string এ রূপান্তরিত করেছে।


3. Customizing JSON Output

Jackson আপনাকে annotations ব্যবহার করে JSON আউটপুট কাস্টমাইজ করার সুবিধা দেয়। এখানে কিছু কাস্টমাইজেশনের উদাহরণ দেওয়া হল:

a. Customizing JSON Property Names

আপনি যদি Java object এর field names এবং JSON keys এর মধ্যে পার্থক্য করতে চান, তবে Jackson এর @JsonProperty অ্যানোটেশন ব্যবহার করতে পারেন।

import com.fasterxml.jackson.annotation.JsonProperty;

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

    // Constructor, Getters, and Setters
}

এখন, যখন আপনি এই Person অবজেক্টটিকে JSON এ রূপান্তর করবেন, তখন JSON এ full_name এবং years_old থাকবে।

b. Ignoring Fields in JSON

কিছু ফিল্ডকে JSON এ অন্তর্ভুক্ত না করার জন্য @JsonIgnore অ্যানোটেশন ব্যবহার করা যায়।

import com.fasterxml.jackson.annotation.JsonIgnore;

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

    @JsonIgnore
    private String password;

    // Constructor, Getters, and Setters
}

এখন, password ফিল্ডটি JSON আউটপুটে থাকবে না।

c. Using @JsonInclude to Exclude Null Values

@JsonInclude অ্যানোটেশন ব্যবহার করে আপনি null মানের ভ্যালুগুলি JSON থেকে বাদ দিতে পারেন।

import com.fasterxml.jackson.annotation.JsonInclude;

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Person {
    private String name;
    private Integer age;  // Will be omitted if null

    // Constructor, Getters, and Setters
}

এতে, null ভ্যালু থাকলে তা JSON আউটপুটে উপস্থিত হবে না।


4. Pretty-Print JSON Output

যদি আপনি JSON আউটপুটকে pretty-print করতে চান, যাতে এটি মানুষের জন্য সহজে পড়া যায়, তবে Jackson এর ObjectMapper এর মাধ্যমে pretty-print করা যেতে পারে।

ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(person);
System.out.println(jsonString);

Output:

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

এটি JSON আউটপুটকে সন্নিবেশযোগ্য এবং সহজে পড়ার জন্য সুন্দরভাবে ফরম্যাট করে।


5. Handling Lists or Arrays in JSON Serialization

Jackson ব্যবহার করে আপনি Java List বা Array অবজেক্টকে JSON এ রূপান্তর করতে পারেন।

import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        try {
            List<String> fruits = Arrays.asList("Apple", "Banana", "Cherry");

            ObjectMapper objectMapper = new ObjectMapper();
            String jsonString = objectMapper.writeValueAsString(fruits);

            System.out.println(jsonString);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Output:

["Apple","Banana","Cherry"]

এখানে, List<String> কে JSON array তে রূপান্তরিত করা হয়েছে।


Jackson এর ObjectMapper ক্লাস ব্যবহার করে Java Object থেকে JSON এ কনভার্ট (Serialization) করা খুবই সহজ। Jackson অত্যন্ত দ্রুত এবং কার্যকরীভাবে JSON তৈরি করতে পারে, যা ডেটা এক্সচেঞ্জ, ডেটাবেস ম্যানিপুলেশন, ওয়েব সার্ভিসেস এবং মোবাইল অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত। Serialization প্রক্রিয়া কাস্টমাইজ করার জন্য Jackson এর annotations ব্যবহার করা যেতে পারে, যেমন @JsonProperty, @JsonIgnore, এবং @JsonInclude

  • ObjectMapper দিয়ে Java objects কে JSON এ রূপান্তর করা এবং JSON থেকে Java objects এ রূপান্তর করা খুবই সহজ।
  • Jackson এর pretty-printing, annotations support, এবং flexible configuration এটি JSON ডেটার সাথে কাজ করার জন্য একটি আদর্শ লাইব্রেরি বানায়।
Content added By
Promotion

Are you sure to start over?

Loading...