HOWTO · Java

Verwenden Sie benutzerdefinierten Serializer mit Jackson in Java

In diesem Tutorial erfahren Sie, wie Sie einen benutzerdefinierten Serializer mit Jackson in Java verwenden.

Auf dieser Seite

In diesem Tutorial erfahren Sie, wie Sie einen benutzerdefinierten Serializer mit Jackson in Java verwenden. Schauen wir uns zunächst das Serialisierungskonzept an.

Serialisierung in Java

Der Serialisierungsprozess in Java ist eine Technik zum Konvertieren eines Objekts in und aus einem Bytestrom. Dies ermöglicht nicht nur das Speichern eines Objekts in einer Datei, sondern auch das Versenden eines Objekts über ein Netzwerk.

Der Serialisierungsprozess beginnt mit der Erstellung einer Implementierung der Serializable-Schnittstelle, gefolgt von der Verwendung von Java.io.

Benutzerdefinierter Serializer mit Jackson in der Klasse

Lassen Sie uns zwei einfache Klassen erstellen, Kunde und Produkt.

Code - Klasse Kunde:

public class Customer {
  public int id;
  public String Cname;
}

Code - Klasse Produkt:

public class Product {
  public int id;
  public String Productname;
  public Customer buyer;
}

Wenden Sie JsonSerialize in der Klasse an

Jetzt registrieren wir den Serializer in der Klasse wie im Folgenden.

@JsonSerialize(using = ProductSerializer.class)
public class Product {
  public int id;
  public String Productname;
  public Customer buyer;
}

Wenden Sie dann die Standardserialisierung an.

Product p = new Product(10, "drinks", new Customer(12, "Peter"));
String serialized = new ObjectMapper().writeValueAsString(p);

Zuletzt erhalten wir die individualisierte JSON-Ausgabe, die vom Serializer generiert und mit @JsonSerialize definiert wurde.

Verwenden Sie die serialize()-Methode in Java

Wir können die Klasse StdSerializer verwenden, um einen benutzerdefinierten Serializer zu implementieren. In diesem Fall müssen wir die Methode serialize() überschreiben.

Syntax:

public abstract void serialize(Product val, JsonGenerator jg, SerializerProvider p)
    throws IOException

Wenn es Ihnen nichts ausmacht, einen benutzerdefinierten Serializer zu haben, brauchen Sie keinen für die Klasse Product zu entwickeln. Stattdessen sollten Sie eine für die Klasse Kunde schreiben.

public void serialize(Product value, JsonGenerator jg, SerializerProvider p)
    throws IOException, JsonProcessingException {
  jg.writeNumber(id);
}