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

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

@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 ইগনোর হয়। ক্লাস লেভেলে অ্যানোটেশন দিতে হয়।

  1. জ্যাকসন লাইব্রেরি ব্যবহার করে জাভা অবজেক্টকে JSON-এ রূপান্তর করা

  2. জ্যাকসন লাইব্রেরি ব্যবহার করে জাভাতে XML কে POJO-তে কনভার্ট করা

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

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