Jackson (1) : annotations communes

1. Descriptif

Déclaration de nom : la sérialisation fait référence à la conversion d'objets d'entité en chaînes json ; la désérialisation fait référence à la conversion de chaînes json en objets d'entité .

1.@JsonInclude

Objectif : Lorsque l'entité est sérialisée dans une chaîne json, elle indique les champs sérialisés éligibles dans l'entité.
Position : sur le nom de la classe, il prend effet sur tous les attributs de la classe ; sur l'attribut, il prend effet uniquement sur l'attribut.
Utilisation : @JsonInclude(Include.value).
(Seules quelques valeurs d'énumération couramment utilisées sont décrites. Pour d'autres descriptions de valeurs d'énumération, veuillez vous référer aux commentaires dans le code source)
Valeur :
NON_NULL, ne sérialise que les propriétés avec des valeurs non nulles.
NON_EMPTY, sérialise uniquement les propriétés avec des valeurs non vides (y compris null).
NON_DEFAULT, sérialise uniquement les propriétés avec des valeurs initiales autres que celles par défaut.

2.@JsonIgnoreProperties

Objectif : si le champ json est converti en une classe d'entité, c'est-à-dire lorsqu'il est désérialisé, s'il existe un champ qui ne peut pas correspondre à la classe d'entité, une exception d'analyse json sera signalée. En utilisant cette annotation, vous pouvez ignorer le contenu dans la chaîne json qui ne correspond pas au nom de propriété de l'objet bean.
Localisation : Classe sur.
Utilisation :
①@JsonIgnoreProperties({"property name", "property name"}) : ignore la propriété spécifiée lors de la désérialisation
②@JsonIgnoreProperties(ignoreUnknown = true) : ignore les propriétés inconnues lors de la désérialisation

3.@JsonProperty

Objectif : lors de la désérialisation, convertir les champs de la chaîne json en attributs spécifiés ; lors de la sérialisation, convertir les attributs de l'objet en noms de champs spécifiés.
Localisation : sur la propriété.
Utilisation : @JsonProperty("Définir les champs dans json")

Deux, exemples

1. Importer la bibliothèque

	<dependency>
		<groupId>com.fasterxml.jackson.core</groupId>
		<artifactId>jackson-core</artifactId>
		<version>${jackson.version}</version>
	</dependency>
	<dependency>
		<groupId>com.fasterxml.jackson.core</groupId>
		<artifactId>jackson-databind</artifactId>
		<version>${jackson.version}</version>
	</dependency>
	<dependency>
		<groupId>com.fasterxml.jackson.core</groupId>
		<artifactId>jackson-annotations</artifactId>
		<version>${jackson.version}</version>
	</dependency>

2. Fonctionnement

SkyLinkSerializer est une classe d'outils jackson encapsulée par moi-même


Classe d'entité @JsonInclude

@Getter
@Setter
@ToString
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Person {
    
    
    private int id;
    private String name;
}

Résultats de test

 @Test
  public void test07() throws SkyLinkException {
    
    
    SkyLinkSerializer se = new SkyLinkSerializer();
    Person p1 = new Person();
    p1.setId(12);
    System.out.println(se.encode(p1));
}

{
    
    "id":12}


Classe d'entité @JsonIgnoreProperties

@Getter
@Setter
@ToString
@JsonIgnoreProperties(ignoreUnknown = true)
public class Person {
    
    
    private int id;
    private String name;
}

Résultats de test

  @Test
  public void test07() throws SkyLinkException {
    
    
    SkyLinkSerializer se = new SkyLinkSerializer();
    String p2 = "{" +
                 "\"id\":12," +
                 "\"ne\":\"www\"," +
                 "\"other\":\"cccc\"" +
                "}";
    System.out.println(se.decode(p2, Person.class));
  }
}

Person(id=12, name=null)

@JsonProperty
@JsonIgnoreProperties
classe d'entité

@Getter
@Setter
@ToString
@JsonIgnoreProperties(ignoreUnknown = true)
public class Person {
    
    
    private int id;
    @JsonProperty("ne")
    private String name;
}

Résultats de test

  @Test
  public void test07() throws SkyLinkException {
    
    
    SkyLinkSerializer se = new SkyLinkSerializer();
    String p2 = "{" +
                 "\"id\":12," +
                 "\"ne\":\"www\"," +
                 "\"other\":\"cccc\"" +
                "}";
    System.out.println(se.decode(p2, Person.class));
  }
}

Person(id=12, name=www)

Je suppose que tu aimes

Origine blog.csdn.net/weixin_42717117/article/details/121396981
conseillé
Classement