Practical উদাহরণ সহ @JsonUnwrapped এর ব্যবহার

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

314

@JsonUnwrapped Jackson এর একটি শক্তিশালী অ্যানোটেশন, যা nested objects বা complex objects কে একত্রে একটি ফ্ল্যাট JSON ফরম্যাটে রূপান্তর করতে ব্যবহৃত হয়। সাধারণত, যখন আপনি একটি জটিল অবজেক্টকে JSON-এ রূপান্তর করেন, তখন এটি একটি nested structure তৈরি করে। কিন্তু @JsonUnwrapped ব্যবহার করলে, আপনি এই nested অবজেক্টের ফিল্ডগুলোকে সরাসরি parent object-এর মধ্যে যুক্ত করতে পারবেন।


@JsonUnwrapped এর ব্যবহার

  • Flattening Nested Objects: Nested অবজেক্টগুলোকে parent object-এর ফিল্ডের মতো একটি সমতল (flat) structure-এ JSON-এ পরিবর্তন করতে।
  • Serialization: Nested অবজেক্টের সমস্ত ফিল্ড parent object-এ একত্রিত হয়ে JSON আউটপুট তৈরি হয়।
  • Deserialization: JSON থেকে nested অবজেক্টের সমস্ত ফিল্ড parent object-এর মধ্যে সঠিকভাবে মাপা হয়।

প্রথম উদাহরণ: Basic @JsonUnwrapped

ক্লাস তৈরি করা:

import com.fasterxml.jackson.annotation.JsonUnwrapped;

public class Address {
    private String street;
    private String city;
    private String state;

    // Constructors, Getters and Setters
    public Address(String street, String city, String state) {
        this.street = street;
        this.city = city;
        this.state = state;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }
}

Parent ক্লাস (Person) তৈরি করা:

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

    @JsonUnwrapped
    private Address address;

    // Constructors, Getters and Setters
    public Person(String name, int age, Address address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }

    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;
    }

    public Address getAddress() {
        return address;
    }

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

Serialization Example:

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonUnwrappedExample {
    public static void main(String[] args) throws Exception {
        Address address = new Address("1234 Elm St", "Springfield", "IL");
        Person person = new Person("John Doe", 30, address);

        ObjectMapper objectMapper = new ObjectMapper();
        String json = objectMapper.writeValueAsString(person);

        System.out.println(json);
    }
}
JSON Output:
{
  "name": "John Doe",
  "age": 30,
  "street": "1234 Elm St",
  "city": "Springfield",
  "state": "IL"
}

ব্যাখ্যা:

  • এখানে, Address ক্লাসটি Person ক্লাসের একটি ফিল্ড হিসেবে থাকে।
  • @JsonUnwrapped ব্যবহার করা হয়েছে Person ক্লাসের address ফিল্ডের উপরে।
  • Address ক্লাসের সমস্ত ফিল্ডগুলো সরাসরি Person JSON অবজেক্টের মধ্যে যোগ হয়ে গেছে। ফলে, street, city, এবং state ফিল্ডগুলো nested structure হিসেবে না গিয়ে, flat structure হিসেবে রয়েছে।

দ্বিতীয় উদাহরণ: @JsonUnwrapped with Nested Objects

Address Class (এবার, এটি আরও জটিল হতে পারে):

public class Address {
    private String street;
    private String city;
    private String state;
    private String zipCode;

    // Constructors, Getters, Setters
    public Address(String street, String city, String state, String zipCode) {
        this.street = street;
        this.city = city;
        this.state = state;
        this.zipCode = zipCode;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public String getZipCode() {
        return zipCode;
    }

    public void setZipCode(String zipCode) {
        this.zipCode = zipCode;
    }
}

Person Class:

import com.fasterxml.jackson.annotation.JsonUnwrapped;

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

    @JsonUnwrapped
    private Address address;

    // Constructors, Getters, Setters
    public Person(String name, int age, Address address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }

    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;
    }

    public Address getAddress() {
        return address;
    }

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

Serialization Example:

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonUnwrappedExample {
    public static void main(String[] args) throws Exception {
        Address address = new Address("1234 Elm St", "Springfield", "IL", "62704");
        Person person = new Person("John Doe", 30, address);

        ObjectMapper objectMapper = new ObjectMapper();
        String json = objectMapper.writeValueAsString(person);

        System.out.println(json);
    }
}
JSON Output:
{
  "name": "John Doe",
  "age": 30,
  "street": "1234 Elm St",
  "city": "Springfield",
  "state": "IL",
  "zipCode": "62704"
}

@JsonUnwrapped এর অন্যান্য ব্যবহার:

Nested Object Unwrapping in a Collection

@JsonUnwrapped ব্যবহার করে আপনি একটি Collection বা List এর মধ্যে থাকা nested অবজেক্টগুলোর ফিল্ডগুলোও একত্রে ফ্ল্যাট JSON-এ রূপান্তর করতে পারেন।

Example:

import com.fasterxml.jackson.annotation.JsonUnwrapped;
import java.util.List;

public class Company {
    private String name;

    @JsonUnwrapped
    private List<Person> employees;

    // Constructors, Getters, Setters
}

এখানে, employees লিস্টের মধ্যে থাকা Person অবজেক্টের সমস্ত ফিল্ড flattened হয়ে যাবে JSON-এ।


@JsonUnwrapped এর সুবিধা:

  1. Flattening Nested Objects:
    • Nested অবজেক্টগুলোকে সরাসরি parent object-এর অংশ হিসেবে একত্রিত করে একটি সমতল JSON তৈরি করা যায়।
  2. Simplified Structure:
    • JSON ডেটা আরও সহজ এবং সংক্ষিপ্ত হয়, যা API-র জন্য আরও ব্যবহারকারী-বান্ধব।
  3. Flexible Serialization:
    • Nested objects-এ ফিল্ডগুলোর মধ্যে ফ্ল্যাট স্ট্রাকচার সুবিধার জন্য উপকারী, যেখানে nested structure প্রয়োজন নেই।

  • @JsonUnwrapped একটি শক্তিশালী অ্যানোটেশন যা nested objects কে সরাসরি parent object-এ একত্রিত করে JSON-এ রূপান্তর করতে সাহায্য করে।
  • এটি JSON-এ স্ট্রাকচার সহজ এবং ফ্ল্যাট করে তোলে, যা API বা ডেটা এক্সচেঞ্জের জন্য কার্যকর।
  • Nested objects সমন্বিত JSON তৈরির জন্য এই অ্যানোটেশন ব্যবহারের ফলে কোড এবং ডেটা আরও পরিষ্কার এবং পারফরম্যান্সের জন্য উপযোগী হয়ে ওঠে।
Content added By
Promotion

Are you sure to start over?

Loading...