Maison  >  Article  >  Java  >  Comment implémenter un sérialiseur personnalisé en Java à l'aide de la bibliothèque Jackson ?

Comment implémenter un sérialiseur personnalisé en Java à l'aide de la bibliothèque Jackson ?

王林
王林avant
2023-09-12 21:37:021374parcourir

Comment implémenter un sérialiseur personnalisé en Java à laide de la bibliothèque Jackson ?

L'API Jackson fournit de nombreuses méthodes pour traiter les données JSON. En utilisant l'API Jackson, nous pouvons convertir des objets Java en chaînes JSON et reconstruire des objets à partir de chaînes JSON. Nous pouvons utiliser la classe StdSerializer pour implémenter un sérialiseur personnalisé et devons remplacer la méthode serialize (T value, JsonGenerator gen, SerializerProvider supplier) La première valeur de paramètre représente la valeur à sérialiser (ne peut pas être vide) et la deuxième valeur de paramètre gen. représente le générateur utilisé pour générer le contenu Json résultant, et le troisième fournisseur de paramètres représente le fournisseur qui peut être utilisé pour obtenir le sérialiseur utilisé pour sérialiser la valeur de l'objet.

Grammaire

public abstract void serialize(T value, JsonGenerator gen, SerializerProvider provider) throws IOException

Exemple

traduit en chinois par :

Exemple

import java.io.*;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.module.*;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
public class JacksonSerializeTest {
   public static void main(String[] args) throws Exception {
      JacksonSerializeTest test = new JacksonSerializeTest();
      test.serialize();
   }
   public void serialize() throws Exception {
      User user = new User();
      user.setFirstName("Raja");
      user.setLastName("Ramesh");
      ObjectMapper mapper = new ObjectMapper();
      SimpleModule module = new SimpleModule();
      module.addSerializer(User.class, new UserSerializer());
      mapper.registerModule(module);

      String jsonStr = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(user); // pretty print
      System.out.println(jsonStr);
   }
}
// User class
class User implements Serializable {
   private String firstName;
   private String lastName;
   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;
   }
}
// UserSerializer class
class UserSerializer extends StdSerializer<User> {
   public UserSerializer() {
      this(null);
   }
   public UserSerializer(Class<User> t) {
      super(t);
   }
<strong>   </strong>@Override
   public void serialize(User value, JsonGenerator jgen, SerializerProvider provider) throws       IOException, JsonProcessingException {
      jgen.writeStartObject();
      jgen.writeStringField("firstName", value.getFirstName());
      jgen.writeStringField("lastName", value.getLastName());
      jgen.writeEndObject();
   }
}

Sortie

{
 "firstName" : "Raja",
 "lastName" : "Ramesh"
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer