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:
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 ]