Para convertir un objeto Java o POJO (Plain Old Java Object) a JSON, podemos usar JSONObject
uno de los constructores que toma un objeto como parámetro. En el siguiente ejemplo, convertimos el Student
POJO en una cadena JSON. Student
La clase debe proporcionar métodos getter, JSONObject
llamando a estos métodos para crear la cadena JSON.
En este fragmento de código, hacemos lo siguiente:
- Utilice métodos setter para crear
Student
objetos y establecer sus propiedades. - Cree una
JSONObject
llamadaobject
y useStudent
el objeto como argumento para su constructor. JSONObject
Utilice el método getter para generar la cadena JSON.- Llame
object.toString()
al método para obtener la cadena JSON.
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import org.json.JSONObject;
import java.util.Arrays;
public class PojoToJSON {
public static void main(String[] args) throws JsonProcessingException {
Student student = new Student();
student.setId(1L);
student.setName("Alice");
student.setAge(20);
student.setCourses(Arrays.asList("Engineering", "Finance", "Chemistry"));
JSONObject object = new JSONObject(student);
String json = object.toString();
System.out.println(json);
System.out.println(new Gson().toJson(student));
// Creating Object of ObjectMapper define in Jackson API
ObjectMapper Obj = new ObjectMapper();
// Converting the Java object into a JSON string
String jsonStr = Obj.writeValueAsString(student);
// Displaying Java object into a JSON string
System.out.println(jsonStr);
}
}
Ejecutar este código produce los siguientes resultados:
{"courses":["Engineering","Finance","Chemistry"],"name":"Alice","id":1,"age":20}
{"id":1,"name":"Alice","age":20,"courses":["Engineering","Finance","Chemistry"]}
{"id":1,"name":"Alice","age":20,"courses":["Engineering","Finance","Chemistry"]}
La clase utilizada en el código anterior Student
:
import java.util.List;
public class Student {
private Long id;
private String name;
private int age;
private List<String> courses;
public Student(Long id, String name, int age, List<String> courses) {
this.id = id;
this.name = name;
this.age = age;
this.courses = courses;
}
Student() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public List<String> getCourses() {
return courses;
}
public void setCourses(List<String> courses) {
this.courses = courses;
}
}
Dependencias expertas
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.javaobjectjson</groupId>
<artifactId>JavaObjectJSON</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20211205</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.1</version>
</dependency>
</dependencies>
</project>