Heim > Java > javaLernprogramm > Wann können wir in Java die Annotationen @JsonAnyGetter und @JsonAnySetter aufrufen?

Wann können wir in Java die Annotationen @JsonAnyGetter und @JsonAnySetter aufrufen?

王林
Freigeben: 2023-09-06 22:13:11
nach vorne
1197 Leute haben es durchsucht

Wann können wir in Java die Annotationen @JsonAnyGetter und @JsonAnySetter aufrufen?

@JsonAnyGetter Die Annotation ermöglicht die Verwendung einer Map als Container für Eigenschaften, die wir in JSON und @JsonAnySetter serialisieren möchten Annotation weist Jackson an, dieselbe Setter-Methode für alle unerkannten Felder im JSON-Objekt aufzurufen, d. h. für alle Felder, die nicht Eigenschaften oder Setter-Methoden im Java-Objekt zugeordnet sind.

Syntax

public @interface JsonAnyGetter
public @interface JsonAnyGetter
Nach dem Login kopieren

Beispiel

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 class
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({"firstName", "lastName", "technologies", "empId" })
class Employee {
   @JsonProperty("EMPLOYEE_ID")
   private int empId;
   @JsonProperty("EMPLOYEE_FIRST_NAME")<strong>
</strong>   private String firstName;
<strong>  </strong> @JsonProperty("EMPLOYEE_LAST_NAME")<strong>
</strong>   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;
   }
<strong>  </strong> @JsonAnyGetter<strong>
</strong>   public Map<String, String> getAdditionalInformation() {
      return additionalInformation;
   }
   public void setAdditionalInformation(Map<String, String> additionalInformation) {
      this.additionalInformation = additionalInformation;
   }
<strong>   </strong>@JsonAnySetter
   public void setAdditionalProperty(final String name, final String value) {
      this.additionalInformation.put(name, value);
   }
}
Nach dem Login kopieren

Ausgabe

{
  "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}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWann können wir in Java die Annotationen @JsonAnyGetter und @JsonAnySetter aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage