কম্পিউটার টিউটোরিয়াল

জ্যাকসনে @JsonUnwrapped অ্যানোটেশনের গুরুত্ব

@JsonUnwrapped অ্যানোটেশন সিরিয়ালাইজেশন এবং ডিসিরিয়ালাইজেশন প্রক্রিয়ায় ভ্যালু আনর্যাপ করতে ব্যবহৃত হয়। এটি কম্পোজড ক্লাসের ভ্যালুকে রেন্ডার করে যেন সেটি প্যারেন্ট ক্লাসের অন্তর্গত मालूम হয়।

সিনট্যাক্স

@Target(value={ANNOTATION_TYPE,FIELD,METHOD,PARAMETER})
@Retention(value=RUNTIME)
public @interface JsonUnwrapped

উদাহরণ

import com.fasterxml.jackson.annotation.JsonUnwrapped;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.JsonProcessingException;

public class JsonUnwrappedAnnotationTest {
    public static void main(String args[]) throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(new Employee());
        System.out.println(jsonString);
    }
}

class Employee {
    public int empId = 110;
    public String empName = "Raja Ramesh";
    
    @JsonUnwrapped
    public Address address = new Address();
    
    // Address class
    public static class Address {
        public String doorNumber = "1118";
        public String street = "madhapur";
        public String pinCode = "500081";
        public String city = "Hyderabad";
    }
}

আউটপুট

{
  "empId" : 110,
  "empName" : "Raja Ramesh",
  "doorNumber" : "1118",
  "street" : "madhapur",
  "pinCode" : "500081",
  "city" : "Hyderabad"
}

ব্যবহার ক্ষেত্র

  • কম্পোজিশন রিলেশনশিপে নেস্টেড অবজেক্ট ফ্ল্যাটেন করতে
  • JSON আউটপুট ক্লিন রাখতে, অপ্রয়োজনীয় নেস্টিং এড়াতে
  • ডিসিরিয়ালাইজেশনেও কাজ করে - ফ্ল্যাট JSON থেকে নেস্টেড অবজেক্ট পপুলেট করে

নোট

যদি একাধিক @JsonUnwrapped ফিল্ড থাকে এবং প্রপার্টি নাম একই হয়, তবে কনফ্লিক্ট হতে পারে। সেক্ষেত্রে @JsonUnwrapped(prefix="addr.") প্রিফিক্স ব্যবহার করুন।

  1. জাভাতে Jackson ব্যবহার করে JSON-এ ফিল্ড নাম পরিবর্তন করার পদ্ধতি

  2. জাভাতে Jackson লাইব্রেরি ব্যবহার করে JSON প্রিটি প্রিন্ট করা

  3. জাভাতে @Override অ্যানোটেশনের গুরুত্ব

  4. জাভাতে FocusListener ইন্টারফেসের গুরুত্ব