Heim  >  Artikel  >  Java  >  Wie implementiert man einen benutzerdefinierten Serialisierer in Java mithilfe der Jackson-Bibliothek?

Wie implementiert man einen benutzerdefinierten Serialisierer in Java mithilfe der Jackson-Bibliothek?

王林
王林nach vorne
2023-09-12 21:37:021374Durchsuche

Wie implementiert man einen benutzerdefinierten Serialisierer in Java mithilfe der Jackson-Bibliothek?

Die Jackson API bietet viele Methoden zur Verarbeitung von JSON-Daten. Mithilfe der Jackson-API können wir Java-Objekte in JSON-Strings konvertieren und Objekte aus JSON-Strings rekonstruieren. Wir können die StdSerializer-Klasse verwenden, um einen benutzerdefinierten Serialisierer zu implementieren, und müssen die Methode serialize(T-Wert, JsonGenerator-Gen, SerializerProvider-Anbieter) überschreiben. Der erste Parameterwert stellt den zu serialisierenden Wert dar (kann nicht leer sein) und der zweite Parameter-Gen stellt den Generator dar, der zum Ausgeben des resultierenden JSON-Inhalts verwendet wird, und der dritte Parameteranbieter stellt den Anbieter dar, der verwendet werden kann, um den Serialisierer zu erhalten, der zum Serialisieren des Objektwerts verwendet wird.

Grammatik

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

Beispiel

übersetzt ins Chinesische als:

Beispiel

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

Ausgabe

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

Das obige ist der detaillierte Inhalt vonWie implementiert man einen benutzerdefinierten Serialisierer in Java mithilfe der Jackson-Bibliothek?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen