HOWTO · Java

Serializar objeto a JSON en Java

Este tutorial demuestra cómo serializar un 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 ]