Verwenden Sie benutzerdefinierten Serializer mit Jackson in Java

Muhammad Zeeshan 12 Oktober 2023
  1. Serialisierung in Java
  2. Benutzerdefinierter Serializer mit Jackson in der Klasse
  3. Verwenden Sie die serialize()-Methode in Java
Verwenden Sie benutzerdefinierten Serializer mit Jackson in Java

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);
}
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn