Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

जावा में Jackson का उपयोग करके @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"}}

बिना WRAP_ROOT_VALUE के आउटपुट

{"empId":125,"empName":"Raja Ramesh"}

मुख्य बिंदु

  • @JsonRootName: रैपर एलिमेंट का नाम परिभाषित करता है
  • WRAP_ROOT_VALUE: SerializationFeature जो रैपिंग को इनेबल/डिसेबल करता है
  • क्लास लेवल: एनोटेशन क्लास पर लागू होता है
  • डीसीरियलाइजेशन: रैप्ड JSON को पढ़ने के लिए भी DeserializationFeature.UNWRAP_ROOT_VALUE इनेबल करना आवश्यक

डीसीरियलाइजेशन कॉन्फिगरेशन

ObjectMapper mapper = new ObjectMapper();
mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
Employee emp = mapper.readValue(jsonString, Employee.class);

उपयोग के मामले

  • XML कम्पैटिबिलिटी: XML रूट एलिमेंट के समान JSON स्ट्रक्चर
  • API कॉन्ट्रैक्ट: जब API स्पेसिफिकेशन रूट रैपर की मांग करता हो
  • मल्टीपल रूट टाइप्स: अलग-अलग ऑब्जेक्ट टाइप्स को पहचानने के लिए
  • लीगेसी सिस्टम इंटीग्रेशन: पुराने सिस्टम्स जो रैप्ड फॉर्मेट एक्सपेक्ट करते हों

कलेक्शन के साथ उपयोग

@JsonRootName("users")
List<User> users = ...;
// आउटपुट: {"users": [{"id":1,...}, {"id":2,...}]}

कस्टम नेमिंग स्ट्रेटेजी

रनटाइम पर डायनामिक रूट नाम के लिए:

mapper.setConfig(mapper.getSerializationConfig()
    .withRootName(new SimpleRootName("customRoot")));
  1. - Jackson लाइब्रेरी का उपयोग करके Java में XML को POJO में कैसे बदलें?

    JSON Jackson Java के लिए एक लाइब्रेरी है। इसमें बहुत शक्तिशाली डेटा बाइंडिंग क्षमताएं हैं और यह कस्टम Java ऑब्जेक्ट्स को JSON में सीरियलाइज़ करने और JSON को वापस Java ऑब्जेक्ट में डिसीरियलाइज़ करने के लिए एक फ्रेमवर्क प्रदान करता है। हम XmlMapper क्लास के readValue() मेथड का उपयोग करके XML फॉर्मेट

  1. - Java में Jackson लाइब्रेरी का उपयोग करके JSON को प्रिटी प्रिंट कैसे करें?

    Jackson API एक Java आधारित लाइब्रेरी है और यह Java ऑब्जेक्ट्स को JSON में और JSON को Java ऑब्जेक्ट में बदलने के लिए उपयोगी हो सकती है। Jackson API अन्य API से तेज़ है, कम मेमोरी क्षेत्र की आवश्यकता होती है और बड़े ऑब्जेक्ट्स के लिए अच्छी है। हम स्ट्रीमिंग API, ट्री मॉडल, और डेटा बाइंडिंग का उपयोग क

  1. - जावा में @Override एनोटेशन का महत्व?

    @Override एनोटेशन डिफ़ॉल्ट जावा एनोटेशन में से एक है और इसे जावा 1.5 वर्जन में पेश किया गया था। @Override एनोटेशन इंगित करता है कि चाइल्ड क्लास मेथड अपने बेस क्लास मेथड को ओवरराइड कर रहा है। @Override एनोटेशन दो कारणों से उपयोगी हो सकता है: यदि एनोटेटेड मेथड वास्तव में कुछ भी ओवरराइड नहीं करता है