Java Technologies Nested Objects কে unwrapped করে JSON properties এ map করা গাইড ও নোট

328

Jackson লাইব্রেরি ব্যবহার করে যখন Nested Objects থাকে, তখন @JsonUnwrapped অ্যানোটেশন ব্যবহার করে এই nested objects-এর ফিল্ডগুলোকে সরাসরি JSON properties হিসেবে মেপ করা যায়। এতে nested object-এর ভিতরের ফিল্ডগুলোকে মূল JSON-এর অংশ হিসেবে প্রক্রিয়া করা হয়, যা এক্সট্রা নেস্টিং থেকে মুক্তি দেয়।


@JsonUnwrapped অ্যানোটেশন কী?

  • @JsonUnwrapped একটি Jackson annotation যা nested object বা embedded object থেকে properties সরাসরি flattened করে JSON ডেটাতে প্রকাশ করে।
  • এর মাধ্যমে nested object এর সমস্ত ফিল্ডকে parent object এর JSON properties হিসেবে উপস্থিত করা যায়।

@JsonUnwrapped ব্যবহারের উদাহরণ

1. Nested Object Example:

ধরা যাক আমাদের একটি Address নামক ক্লাস রয়েছে, যা User নামক একটি ক্লাসের মধ্যে Nested Object হিসেবে রয়েছে।

Address Class:
public class Address {
    private String street;
    private String city;
    private String zipCode;

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

    // Getters and Setters
    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 getZipCode() {
        return zipCode;
    }

    public void setZipCode(String zipCode) {
        this.zipCode = zipCode;
    }
}
User Class with Nested Address Object:
import com.fasterxml.jackson.annotation.JsonUnwrapped;

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

    @JsonUnwrapped
    private Address address;

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

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

    public Address getAddress() {
        return address;
    }

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

Serialization Example (Flattening Nested Object)

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonUnwrappedExample {
    public static void main(String[] args) throws Exception {
        Address address = new Address("123 Main St", "Dhaka", "1212");
        User user = new User("Rahim", 30, address);

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

        System.out.println(json);
    }
}
JSON Output:
{
  "name": "Rahim",
  "age": 30,
  "street": "123 Main St",
  "city": "Dhaka",
  "zipCode": "1212"
}

এখানে, address এর street, city, এবং zipCode ফিল্ডগুলো সরাসরি User JSON-এর অংশ হয়ে গেছে, কারণ @JsonUnwrapped ব্যবহার করা হয়েছে।


@JsonUnwrapped ব্যবহার করে Nested Object গুলো Unwrap করা

  1. Flattening Nested Object:
    • @JsonUnwrapped এর সাহায্যে nested object-এর সকল প্রোপার্টি parent object-এর সঙ্গে যুক্ত হয়ে যায়।
  2. JSON Output Simple and Clean:
    • Nested object গুলোর মধ্যে ভেতরের ডেটা দেখতে পাওয়া যায়, যাতে ফ্ল্যাট JSON তৈরি হয়।

Nested Object গুলোর উপর আরও কাস্টমাইজেশন

@JsonUnwrapped with prefix and suffix

Jackson এর @JsonUnwrapped অ্যানোটেশনকে আপনি prefix এবং suffix যুক্ত করতে পারেন, যা প্রতিটি nested object ফিল্ডের নামের আগে এবং পরে কাস্টম টেক্সট অ্যাড করবে।

Example with Prefix and Suffix:
import com.fasterxml.jackson.annotation.JsonUnwrapped;

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

    @JsonUnwrapped(prefix = "address_")
    private Address address;

    // Constructors, Getters, and Setters
}
JSON Output with Prefix:
{
  "name": "Rahim",
  "age": 30,
  "address_street": "123 Main St",
  "address_city": "Dhaka",
  "address_zipCode": "1212"
}

@JsonUnwrapped একটি Nested Object এর অংশবিশেষ JSON থেকে বাদ দেওয়া

যদি আপনি কিছু nested ফিল্ড বাদ দিতে চান, তবে আপনি @JsonIgnore অ্যানোটেশন ব্যবহার করতে পারেন।

Example:

import com.fasterxml.jackson.annotation.JsonUnwrapped;
import com.fasterxml.jackson.annotation.JsonIgnore;

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

    @JsonIgnore
    private String zipCode;

    // Getters and Setters
}

এখানে zipCode ফিল্ডটি Unwrapped JSON থেকে বাদ দেওয়া হয়েছে, কারণ এতে @JsonIgnore অ্যানোটেশন ব্যবহার করা হয়েছে।


@JsonUnwrapped বনাম @JsonProperty

  • @JsonUnwrapped: এটি nested object কে parent JSON object এর মধ্যে সমন্বিত করে, এটি পুরো nested object ফিল্ড গুলি সরাসরি ফ্ল্যাট আউটপুটে প্রতিফলিত করে।
  • @JsonProperty: এটি একটি নির্দিষ্ট Java ফিল্ড বা মেথডের নাম পরিবর্তন বা কাস্টমাইজ করার জন্য ব্যবহৃত হয়।

  1. @JsonUnwrapped একটি শক্তিশালী অ্যানোটেশন, যা nested objects-এর ডেটাকে parent object এর অংশ হিসেবে flatten করে।
  2. এটি JSON structure সহজ এবং পরিষ্কার করতে সহায়তা করে, বিশেষত যখন nested data কাস্টম ফরম্যাটে প্রকাশ করতে হয়।
  3. Prefix এবং Suffix ব্যবহার করে JSON এর nested fields কাস্টমাইজ করা যায়।
  4. Circular references বা complex relationships এ কাজ করার সময় @JsonIgnore ব্যবহার করে nested fields বাদ দেয়া সম্ভব।

@JsonUnwrapped Jackson এর একটি গুরুত্বপূর্ণ অ্যানোটেশন যা JSON ফরম্যাট সহজ করে তোলে এবং nested data সরাসরি উপস্থাপন করতে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...