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

Java में @JsonAnyGetter और @JsonAnySetter एनोटेशन कब कॉल कर सकते हैं?

@JsonAnyGetter एनोटेशन एक Map को उन प्रॉपर्टीज़ के लिए कंटेनर के रूप में उपयोग करने में सक्षम बनाता है जिन्हें हम JSON में सीरियलाइज़ करना चाहते हैं और @JsonAnySetter एनोटेशन Jackson को JSON ऑब्जेक्ट में सभी अनरिकग्नाइज़्ड फील्ड्स के लिए उसी सेटर मेथड को कॉल करने का निर्देश देता है, जिसका अर्थ है कि वे सभी फील्ड्स जो पहले से ही Java ऑब्जेक्ट में किसी प्रॉपर्टी या सेटर मेथड से मैप नहीं हैं।

सिंटैक्स

public @interface JsonAnyGetter public @interface JsonAnyGetter

उदाहरण

import java.io.*; 
import java.util.*; 
import com.fasterxml.jackson.core.*; 
import com.fasterxml.jackson.databind.*; 
import com.fasterxml.jackson.annotation.*; 

public class JsonAnyGetterAndJsonAnySetterTest { 
    public static void main(String args[]) throws JsonGenerationException, JsonMappingException, IOException { 
        Employee emp1 = new Employee(); 
        emp1.setFirstName("Adithya"); 
        emp1.setLastName("Sai"); 
        emp1.setEmpId(125); 
        emp1.getAdditionalInformation().put("technology1", "Machine Learning"); 
        emp1.getAdditionalInformation().put("technology2", "Robotics"); 
        ObjectMapper mapper = new ObjectMapper(); 
        String jsonStr = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(emp1); 
        System.out.println(jsonStr); 
        System.out.println("Deserializing JSON to Object:"); 
        Employee emp2 = mapper.readValue(jsonStr, Employee.class); 
        System.out.println("id : " + emp2.getEmpId()); 
        System.out.println("firstName : " + emp2.getFirstName()); 
        System.out.println("lastName : " + emp2.getLastName()); 
        System.out.println("Additional information : " + emp2.getAdditionalInformation()); 
    } 
} 

// Employee क्लास 
@JsonInclude(JsonInclude.Include.NON_NULL) 
@JsonPropertyOrder({"firstName", "lastName", "technologies", "empId" }) 
class Employee { 
    @JsonProperty("EMPLOYEE_ID") 
    private int empId; 
    @JsonProperty("EMPLOYEE_FIRST_NAME") 
    private String firstName; 
    @JsonProperty("EMPLOYEE_LAST_NAME") 
    private String lastName; 
    private Map<String, String> additionalInformation = new HashMap<>(); 
    
    public int getEmpId() { return empId; } 
    public void setEmpId(int empId) { this.empId = empId; } 
    public String getFirstName() { return firstName; } 
    public void setFirstName(String firstName) { this.firstName = firstName; } 
    public String getLastName() { return lastName; } 
    public void setLastName(String lastName) { this.lastName = lastName; } 
    
    @JsonAnyGetter 
    public Map<String, String> getAdditionalInformation() { 
        return additionalInformation; 
    } 
    
    public void setAdditionalInformation(Map<String, String> additionalInformation) { 
        this.additionalInformation = additionalInformation; 
    } 
    
    @JsonAnySetter 
    public void setAdditionalProperty(final String name, final String value) { 
        this.additionalInformation.put(name, value); 
    } 
}

आउटपुट

{
  "EMPLOYEE_FIRST_NAME" : "Adithya",
  "EMPLOYEE_LAST_NAME" : "Sai",
  "EMPLOYEE_ID" : 125,
  "technology1" : "Machine Learning",
  "technology2" : "Robotics"
}
Deserializing JSON to Object:
id : 125
firstName : Adithya
lastName : Sai
Additional information : {technology1=Machine Learning, technology2=Robotics}

  1. Java में pack() मेथड का उपयोग कब कर सकते हैं? Java में pack() मेथड का उपयोग कब कर सकते हैं?

    pack() मेथड Java में Window क्लास में परिभाषित है और यह फ्रेम को इस तरह आकार देता है कि इसकी सभी सामग्री उनके पसंदीदा आकार पर या उससे ऊपर हैं। pack() मेथड का एक विकल्प setSize() या setBounds() मेथड्स को कॉल करके फ्रेम आकार को स्पष्ट रूप से स्थापित करना है। सामान्य तौर पर, pack() मेथड का उपयोग setSiz

  1. जावा में invokeLater() मेथड को कैसे कॉल करें? जावा में invokeLater() मेथड को कैसे कॉल करें?

    invokeLater() मेथड SwingUtilities क्लास का एक स्टैटिक मेथड है और इसका उपयोग AWT इवेंट डिस्पैचर थ्रेड में असिंक्रोनसली कार्य करने के लिए किया जा सकता है। SwingUtilities.invokeLater() मेथड SwingUtilities.invokeAndWait() की तरह काम करता है सिवाय इसके कि यह अनुरोध को इवेंट क्यू पर रखता है और तुरंत वापस

  1. - Java में एब्सट्रैक्ट क्लास कब उपयोग करें और इंटरफेस कब उपयोग करें?

    एक इंटरफेस का उपयोग कॉन्ट्रैक्ट बिहेवियर को परिभाषित करने के लिए किया जा सकता है और यह दो सिस्टम्स के बीच इंटरैक्ट करने के लिए कॉन्ट्रैक्ट के रूप में भी कार्य कर सकता है जबकि एक एब्सट्रैक्ट क्लास मुख्य रूप से सबक्लासेस के लिए डिफ़ॉल्ट बिहेवियर को परिभाषित करने के लिए उपयोग की जाती है, इसका अर्थ है