@JsonRootName অ্যানোটেশন একটি অবজেক্টকে টপ-লেভেল এলিমেন্ট দিয়ে র্যাপ করে সিরিয়ালাইজ করতে ব্যবহৃত হয়। আমরা @JsonRootName অ্যানোটেশনে নাম পাস করতে পারি। SerializationFeature.WRAP_ROOT_VALUE ফিচার ইনএবল করে রুট ভ্যালুটকে সিঙ্গেল প্রপার্টি JSON অবজেক্টে র্যাপ করা যায় যেখানে কী হয় রুট নাম।
উদাহরণ
import com.fasterxml.jackson.annotation.JsonRootName;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.SerializationFeature;
public class JsonRootNameAnnotationTest {
public static void main(String args[]) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.enable(SerializationFeature.WRAP_ROOT_VALUE).writeValueAsString(new Employee());
System.out.println(jsonString);
}
}
@JsonRootName(value = "user")
class Employee {
public int empId = 125;
public String empName = "Raja Ramesh";
}
আউটপুট
{"user":{"empId":125,"empName":"Raja Ramesh"}}
ব্যবহার ক্ষেত্র
- XML-এ রুট এলিমেন্টের মতো JSON-এ রুট র্যাপার দরকার হলে
- কিছু ফ্রেমওয়ার্ক/লাইব্রেরি রুট নেম এক্সপেক্ট করে (যেমন: কিছু রেস্ট ক্লায়েন্ট)
- পলিমরফিক টাইপ হ্যান্ডলিং-এ টাইপ আইডেন্টিফিকেশনের জন্য
নোট
WRAP_ROOT_VALUE ইনএবল না করলে @JsonRootName ইগনোর হয়। ক্লাস লেভেলে অ্যানোটেশন দিতে হয়।