Serializar objeto a JSON en Java

Sheeraz Gul 12 octubre 2023
Serializar objeto a JSON en Java

Este tutorial demuestra el uso de la API Java-JSON y Jackson para serializar un objeto a JSON en Java.

Serializar objeto a JSON en Java

Se proporcionan diferentes bibliotecas que se utilizan para operaciones JSON. Estas bibliotecas también pueden serializar objetos de Java a JSON mediante la programación de Java.

Use la API Java-JSON para serializar el objeto Java a JSON

El Java-JSON es una API de terceros para realizar operaciones JSON en Java, ya que Java no admite JSON en el modo integrado. Esta biblioteca puede serializar objetos Java a JSON.

El Java-JSON viene con diferentes características y es mejor que muchas bibliotecas similares. Las características principales son:

  • Compatibilidad con versiones anteriores.
  • Resultados consistentes y confiables.
  • Tiene una ejecución rápida y una huella de memoria baja.
  • No hay dependencias externas.
  • Proporciona adherencia a la especificación JSON.

Antes de usar esta API, debe agregarla a su ruta de compilación. Se puede hacer fácilmente usando la dependencia del proyecto Gradle:

implementation 'org.json:json:20210307'

También puede agregarlo a su proyecto Java general descargando el archivo jar de esta API desde aquí y agréguelo a la ruta de compilación de su proyecto.

El Java-JSON proporciona una clase JSONWriter que podemos usar para serializar datos de Java en un objeto JSON. Probemos un ejemplo:

package delftstack;

import java.io.StringWriter;
import java.io.Writer;
import org.json.JSONException;
import org.json.JSONWriter;

public class Example {
  public static void main(String[] args) throws JSONException {
    Writer DemoUser = new StringWriter();

    var JSON_Writer = new JSONWriter(DemoUser);

    JSON_Writer.object();
    JSON_Writer.key("Name").value("Sheeraz");
    JSON_Writer.key("Occupation").value("Software Engineer");
    JSON_Writer.key("Age").value(28);
    JSON_Writer.key("Married").value(false);

    JSON_Writer.key("Skills");
    JSON_Writer.array();
    JSON_Writer.value("Java");
    JSON_Writer.value("Python");
    JSON_Writer.value("PHP");
    JSON_Writer.value("Matlab");
    JSON_Writer.value("R");
    JSON_Writer.endArray();

    JSON_Writer.endObject();

    System.out.println(DemoUser);
  }
}

El código anterior serializará los datos en un objeto JSON utilizando la clase JSONWriter de la API. Ver salida:

{"Name":"Sheeraz","Occupation":"Software Engineer","Age":28,"Married":false,"Skills":["Java","Python","PHP","Matlab","R"]}

Use la API Jackson para serializar el objeto Java a JSON

Jackson es una biblioteca de código abierto para operaciones JSON en Java. La biblioteca puede serializar y deserializar objetos JSON en Java.

Esta biblioteca tiene el método writeValue(...), que se utiliza para serializar objetos Java a objetos JSON. Esta API se puede agregar como una dependencia experta:

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

Otra forma es agregar jars para la API de Jackson a la ruta de compilación general de su proyecto. Descarga los frascos desde los siguientes enlaces:

  1. enlace de datos jackson
  2. jackson-core

Una vez que la API se agrega a la ruta de compilación ahora, podemos probar un ejemplo para serializar el objeto Java a JSON:

package delftstack;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;

public class Example {
  public static void main(String args[]) {
    Example JSON_Tester = new Example();
    try {
      Employee Employee1 = new Employee();
      Employee1.setAge(28);
      Employee1.setName("Sheeraz");
      JSON_Tester.writeJSON(Employee1);

      Employee Employee2 = JSON_Tester.readJSON();
      System.out.println(Employee2);

    } catch (JsonParseException e) {
      e.printStackTrace();
    } catch (JsonMappingException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  private void writeJSON(Employee employee)
      throws JsonGenerationException, JsonMappingException, IOException {
    ObjectMapper Object_Mapper = new ObjectMapper();
    Object_Mapper.writeValue(new File("employee.json"), employee);
  }

  private Employee readJSON() throws JsonParseException, JsonMappingException, IOException {
    ObjectMapper Object_Mapper = new ObjectMapper();
    Employee employee = Object_Mapper.readValue(new File("employee.json"), Employee.class);
    return employee;
  }
}

class Employee {
  private String Employee_Name;
  private int Employee_Age;
  public Employee() {}
  public String getName() {
    return Employee_Name;
  }
  public void setName(String Employee_Name) {
    this.Employee_Name = Employee_Name;
  }
  public int getAge() {
    return Employee_Age;
  }
  public void setAge(int Employee_Age) {
    this.Employee_Age = Employee_Age;
  }
  public String toString() {
      return "Employee [Employee Name: "+Employee_Name+",
      Employee Age: "+Employee_Age+ " ]";
  }
}

El código anterior convertirá los datos de una clase Java en un JSON. Ver salida:

Employee [Employee Name: Sheeraz, Employee Age: 28 ]
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Artículo relacionado - Java Object

Artículo relacionado - Java JSON