@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.") প্রিফিক্স ব্যবহার করুন।