Usar serializador personalizado con Jackson en Java

Muhammad Zeeshan 12 octubre 2023
  1. Serialización en Java
  2. Serializador personalizado con Jackson en la clase
  3. Usa el método serialize() en Java
Usar serializador personalizado con Jackson en Java

Este tutorial verá cómo utilizar un serializador personalizado con Jackson en Java. Primero, echemos un vistazo al concepto de serialización.

Serialización en Java

El proceso de serialización en Java es una técnica para convertir un objeto hacia y desde un flujo de bytes. Esto no solo permite almacenar un objeto en un archivo, sino que también permite enviar un objeto a través de una red.

El proceso de serialización comienza con la creación de una implementación de la interfaz Serializable, seguido del uso de Java.io.

Serializador personalizado con Jackson en la clase

Vamos a crear dos clases simples, Cliente y Producto.

Código - Clase Cliente:

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

Código - clase Producto:

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

Aplicar JsonSerialize en la Clase

Ahora, registraremos el serializador en la clase como se muestra a continuación.

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

Luego aplique la serialización estándar.

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

Por último, obtendremos la salida JSON individualizada generada por el serializador y definida mediante el @JsonSerialize.

Usa el método serialize() en Java

Podemos usar la clase StdSerializer para implementar un serializador personalizado. En este caso, necesitaremos anular el método serialize().

Sintaxis:

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

Si no le importa tener un serializador personalizado, no necesita desarrollar uno para la clase Producto. En su lugar, debe escribir uno para la clase Cliente.

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