Maison > Java > javaDidacticiel > En Java, quand pouvons-nous appeler les annotations @JsonAnyGetter et @JsonAnySetter ?

En Java, quand pouvons-nous appeler les annotations @JsonAnyGetter et @JsonAnySetter ?

王林
Libérer: 2023-09-06 22:13:11
avant
1323 Les gens l'ont consulté

En Java, quand pouvons-nous appeler les annotations @JsonAnyGetter et @JsonAnySetter ?

@JsonAnyGetter L'annotation permet d'utiliser une Map comme conteneur pour les propriétés que nous souhaitons sérialiser en JSON et @JsonAnySetter annotation demande à Jackson d'appeler la même méthode setter sur tous les champs non reconnus de l'objet JSON, c'est-à-dire tous les champs qui ne sont pas mappés aux propriétés ou aux méthodes setter dans l'objet Java.

Syntaxe

1

2

public @interface JsonAnyGetter

public @interface JsonAnyGetter

Copier après la connexion

Exemple

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

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);

   }

}

Copier après la connexion

Sortie

1

2

3

4

5

6

7

8

9

10

11

12

{

  "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}

Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers numéros
Impossible d'installer Java
Depuis 1970-01-01 08:00:00
0
0
0
Installer JAVA
Depuis 1970-01-01 08:00:00
0
0
0
Java peut-il être utilisé comme backend du Web ?
Depuis 1970-01-01 08:00:00
0
0
0
Aide : Données chiffrées JAVA Décryptage PHP
Depuis 1970-01-01 08:00:00
0
0
0
Est-ce en langage Java ?
Depuis 1970-01-01 08:00:00
0
0
0
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal