AYUDA JAVA

Jackson Java (Cómo funciona para desarrolladores)

Publicado en 29 de septiembre, 2024
Compartir:

En el ámbito de la programación moderna, gestionar datos en forma de JSON (Notación de objetos de JavaScript) se ha convertido en una tarea crucial. La simplicidad y facilidad de uso de JSON lo convierten en una opción popular para el intercambio de datos entre un servidor y un cliente. Para los desarrolladores de Java, la biblioteca Jackson se destaca como una herramienta poderosa para el procesamiento de JSON. Este artículo profundiza en las características, el uso y las ventajas de Jackson Java, proporcionando ejemplos de código para ilustrar sus capacidades. Además, exploraremos IronPDF para Java y demuestre cómo integrarlo con Jackson para generar documentos PDF a partir de datos JSON.

¿Qué es Jackson?

Jackson es un procesador JSON de alto rendimiento para Java. Ofrece soporte completo para JSON, proporcionando un conjunto de herramientas para serializar objetos Java en JSON y deserializar JSON en objetos Java. Desarrollado por FasterXML, Jackson es ampliamente utilizado en la comunidad de Java debido a su robustez, flexibilidad y facilidad de uso.

Características principales de Jackson

  1. Vinculación de datos: Jackson destaca por convertir objetos Java a JSON y viceversa, lo que facilita la serialización y deserialización de datos.

  2. Tree Model: Esta función permite analizar JSON en una estructura similar a un árbol, lo que permite manipular los datos JSON sin necesidad de vincularlos a objetos Java específicos.

  3. API de transmisión: Para procesar archivos JSON grandes, Jackson ofrece una API de bajo nivel que lee y escribe contenido JSON como tokens discretos.

  4. Compatibilidad con anotaciones: Jackson admite varias anotaciones para controlar los procesos de serialización y deserialización, ofreciendo un control detallado sobre el procesamiento de JSON.

    1. Extensibilidad: Con módulos para varios formatos de datos y funcionalidad adicional, Jackson es altamente extensible.

    Jackson Java (Cómo funciona para desarrolladores): Figura 1

Primeros pasos con Jackson

Para comenzar a usar Jackson en tu proyecto Java, necesitas agregar las dependencias necesarias. Para los usuarios que utilizan Maven, agregue el siguiente código a su pom.xml:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.13.2</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.13.2</version>
</dependency>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<dependency> <groupId> com.fasterxml.jackson.core</groupId> <artifactId> jackson-databind</artifactId> <version>2.13.2</version> </dependency>
VB   C#

Uso básico de Jackson

1. Enlace de datos

El uso más común de Jackson es vincular datos JSON a objetos Java. (POJOs) y viceversa. Aquí hay un ejemplo sencillo para demostrar esto:

import com.fasterxml.jackson.databind.ObjectMapper;
class Main {
    public static void main(String[] args) {
        ObjectMapper objectMapper = new ObjectMapper();
        // Java object to JSON
        try {
            User user = new User("John", "Doe", 30);
            String jsonString = objectMapper.writeValueAsString(user);
            System.out.println("JSON String: " + jsonString);
            // JSON to Java object
            String jsonInput = "{\"firstName\":\"Jane\",\"lastName\":\"Doe\",\"age\":25}";
            User userFromJson = objectMapper.readValue(jsonInput, User.class);
            System.out.println("User from JSON: " + userFromJson);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
class User {
    public String firstName;
    public String lastName;
    public int age;
    public User() {
    }
    public User(String firstname, String lastname, int i) {
        firstName = firstname;
        lastName = lastname;
        age = i;
    }
}
import com.fasterxml.jackson.databind.ObjectMapper;
class Main {
    public static void main(String[] args) {
        ObjectMapper objectMapper = new ObjectMapper();
        // Java object to JSON
        try {
            User user = new User("John", "Doe", 30);
            String jsonString = objectMapper.writeValueAsString(user);
            System.out.println("JSON String: " + jsonString);
            // JSON to Java object
            String jsonInput = "{\"firstName\":\"Jane\",\"lastName\":\"Doe\",\"age\":25}";
            User userFromJson = objectMapper.readValue(jsonInput, User.class);
            System.out.println("User from JSON: " + userFromJson);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
class User {
    public String firstName;
    public String lastName;
    public int age;
    public User() {
    }
    public User(String firstname, String lastname, int i) {
        firstName = firstname;
        lastName = lastname;
        age = i;
    }
}
Private com As import
Friend Class Main
	Public Shared Sub main(ByVal args() As String)
		Dim objectMapper As New ObjectMapper()
		' Java object to JSON
		Try
			Dim user As New User("John", "Doe", 30)
			Dim jsonString As String = objectMapper.writeValueAsString(user)
			System.out.println("JSON String: " & jsonString)
			' JSON to Java object
			Dim jsonInput As String = "{""firstName"":""Jane"",""lastName"":""Doe"",""age"":25}"
			Dim userFromJson As User = objectMapper.readValue(jsonInput, User.class)
			System.out.println("User from JSON: " & userFromJson)
		Catch e As Exception
			e.printStackTrace()
		End Try
	End Sub
End Class
Friend Class User
	Public firstName As String
	Public lastName As String
	Public age As Integer
	Public Sub New()
	End Sub
	Public Sub New(ByVal firstname As String, ByVal lastname As String, ByVal i As Integer)
		Me.firstName = firstname
		Me.lastName = lastname
		age = i
	End Sub
End Class
VB   C#

Jackson Java (Cómo Funciona para Desarrolladores): Figura 2 - Ejemplo de salida vinculando datos JSON a Objetos Java

2. Modelo de Árbol

El modelo de árbol de Jackson es útil para manipular datos JSON sin necesidad de crear clases Java. He aquí un ejemplo:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
class TreeModelExample {
    public static void main(String[] args) {
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            String jsonString = "{\"name\":\"John\", \"age\":30}";
            // Parse JSON string into JsonNode
            JsonNode rootNode = objectMapper.readTree(jsonString);
            System.out.println("Name: " + rootNode.get("name").asText());
            System.out.println("Age: " + rootNode.get("age").asInt());
            // Modify the JSON
            ((ObjectNode) rootNode).put("age", 31);
            System.out.println("Modified JSON: " + rootNode.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
class TreeModelExample {
    public static void main(String[] args) {
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            String jsonString = "{\"name\":\"John\", \"age\":30}";
            // Parse JSON string into JsonNode
            JsonNode rootNode = objectMapper.readTree(jsonString);
            System.out.println("Name: " + rootNode.get("name").asText());
            System.out.println("Age: " + rootNode.get("age").asInt());
            // Modify the JSON
            ((ObjectNode) rootNode).put("age", 31);
            System.out.println("Modified JSON: " + rootNode.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Private com As import
Private com As import
Private com As import
Friend Class TreeModelExample
	Public Shared Sub main(ByVal args() As String)
		Dim objectMapper As New ObjectMapper()
		Try
			Dim jsonString As String = "{""name"":""John"", ""age"":30}"
			' Parse JSON string into JsonNode
			Dim rootNode As JsonNode = objectMapper.readTree(jsonString)
			System.out.println("Name: " & rootNode.get("name").asText())
			System.out.println("Age: " & rootNode.get("age").asInt())
			' Modify the JSON
			CType(rootNode, ObjectNode).put("age", 31)
			System.out.println("Modified JSON: " & rootNode.toString())
		Catch e As Exception
			e.printStackTrace()
		End Try
	End Sub
End Class
VB   C#

Jackson Java (Cómo funciona para desarrolladores): Figura 3 - Modificar directamente los datos JSON sin usar clases de Java

3. API de transmisión

Para procesar archivos JSON grandes, la API de transmisión es eficiente:

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import java.io.File;
class StreamingAPIExample {
    public static void main(String[] args) {
        JsonFactory factory = new JsonFactory();
        try (JsonParser parser = factory.createParser(new File("large.json"))) {
            while (!parser.isClosed()) {
                JsonToken token = parser.nextToken();
                if (token == JsonToken.FIELD_NAME) {
                    String fieldName = parser.getCurrentName();
                    System.out.println("Field: " + fieldName);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import java.io.File;
class StreamingAPIExample {
    public static void main(String[] args) {
        JsonFactory factory = new JsonFactory();
        try (JsonParser parser = factory.createParser(new File("large.json"))) {
            while (!parser.isClosed()) {
                JsonToken token = parser.nextToken();
                if (token == JsonToken.FIELD_NAME) {
                    String fieldName = parser.getCurrentName();
                    System.out.println("Field: " + fieldName);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Private com As import
Private com As import
Private com As import
Private java As import
Friend Class StreamingAPIExample
	Public Shared Sub main(ByVal args() As String)
		Dim factory As New JsonFactory()
		Try
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'			(JsonParser parser = factory.createParser(New File("large.json")))
'		{
'			while (!parser.isClosed())
'			{
'				JsonToken token = parser.nextToken();
'				if (token == JsonToken.FIELD_NAME)
'				{
'					String fieldName = parser.getCurrentName();
'					System.out.println("Field: " + fieldName);
'				}
'			}
'		}
		Catch e As Exception
			e.printStackTrace()
		End Try
		End Try
	End Sub
VB   C#

Archivo JSON de entrada

Jackson Java (Cómo funciona para los desarrolladores): Figura 4 - Ejemplo de datos de entrada JSON

Imagen de salida

Jackson Java (Cómo funciona para desarrolladores): Figura 5 - Ejemplo de campos de datos de salida después del procesamiento

Presentación de IronPDF for Java

IronPDF es una biblioteca completa para crear, editar y renderizar documentos PDF en Java. Ofrece una API sencilla para generar PDFs a partir de diversas fuentes, como HTML, URLs o documentos existentes. IronPDF es particularmente útil cuando necesitas crear PDFs a partir de datos JSON procesados por Jackson. Por ejemplo, si un desarrollador está creando una aplicación Spring Boot que implica la generación de informes basados en datos, IronPDF puede agilizar significativamente el flujo de trabajo.

Jackson Java (Cómo funciona para desarrolladores): Figura 6 - Página principal de IronPDF: La biblioteca PDF de Java

Añadir IronPDF a su proyecto

Para usar IronPDF en tu proyecto, agrega la siguiente dependencia:

<dependency>
    <groupId>com.ironsoftware</groupId>
    <artifactId>ironpdf</artifactId>
    <version>2023.6.0</version>
</dependency>
<dependency>
    <groupId>com.ironsoftware</groupId>
    <artifactId>ironpdf</artifactId>
    <version>2023.6.0</version>
</dependency>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<dependency> <groupId> com.ironsoftware</groupId> <artifactId> ironpdf</artifactId> <version>2023.6.0</version> </dependency>
VB   C#

Integración de Jackson con IronPDF

Combinando Jackson e IronPDF, podemos crear una potente solución para generar documentos PDF a partir de datos JSON. A continuación se muestra un ejemplo completo que lee datos JSON, los procesa con Jackson y genera un documento PDF usando IronPDF.

import com.fasterxml.jackson.databind.ObjectMapper;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.*;
import java.io.File;
import java.util.List;
class JacksonIronPDFExample {
    public static void main(String[] args) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            // Read JSON from a file
            List<Person> persons = objectMapper.readValue(new File("persons.json"),
                    objectMapper.getTypeFactory().constructCollectionType(List.class, Person.class));
            // Generate HTML content from the JSON data
            StringBuilder htmlContent = new StringBuilder("<h1>Persons List</h1><table border='1'><tr><th>First Name</th><th>Last Name</th><th>Birth Date</th></tr>");
            for (Person person : persons) {
                htmlContent.append("<tr>")
                        .append("<td>").append(person.getFirstName()).append("</td>")
                        .append("<td>").append(person.getLastName()).append("</td>")
                        .append("<td>").append(person.getBirthDate()).append("</td>")
                        .append("</tr>");
            }
            htmlContent.append("</table>");
            // Create PDF from the HTML content
            PdfDocument pdf = PdfDocument.renderHtmlAsPdf(htmlContent.toString());
            pdf.saveAs("persons.pdf");
            System.out.println("PDF created successfully from JSON data!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
class Person {
    private String firstName;
    private String lastName;
    private String birthDate;
    // Constructors, getters, and setters omitted for brevity
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public String getBirthDate() {
        return birthDate;
    }
    public void setBirthDate(String birthDate) {
        this.birthDate = birthDate;
    }
}
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.*;
import java.io.File;
import java.util.List;
class JacksonIronPDFExample {
    public static void main(String[] args) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            // Read JSON from a file
            List<Person> persons = objectMapper.readValue(new File("persons.json"),
                    objectMapper.getTypeFactory().constructCollectionType(List.class, Person.class));
            // Generate HTML content from the JSON data
            StringBuilder htmlContent = new StringBuilder("<h1>Persons List</h1><table border='1'><tr><th>First Name</th><th>Last Name</th><th>Birth Date</th></tr>");
            for (Person person : persons) {
                htmlContent.append("<tr>")
                        .append("<td>").append(person.getFirstName()).append("</td>")
                        .append("<td>").append(person.getLastName()).append("</td>")
                        .append("<td>").append(person.getBirthDate()).append("</td>")
                        .append("</tr>");
            }
            htmlContent.append("</table>");
            // Create PDF from the HTML content
            PdfDocument pdf = PdfDocument.renderHtmlAsPdf(htmlContent.toString());
            pdf.saveAs("persons.pdf");
            System.out.println("PDF created successfully from JSON data!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
class Person {
    private String firstName;
    private String lastName;
    private String birthDate;
    // Constructors, getters, and setters omitted for brevity
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public String getBirthDate() {
        return birthDate;
    }
    public void setBirthDate(String birthDate) {
        this.birthDate = birthDate;
    }
}
Private com As import
Private com As import
Private com As import
Private java As import
Private java As import
Friend Class JacksonIronPDFExample
	Public Shared Sub main(ByVal args() As String)
		Try
			Dim objectMapper As New ObjectMapper()
			' Read JSON from a file
			Dim persons As List(Of Person) = objectMapper.readValue(New File("persons.json"), objectMapper.getTypeFactory().constructCollectionType(List.class, Person.class))
			' Generate HTML content from the JSON data
			Dim htmlContent As New StringBuilder("<h1>Persons List</h1><table border='1'><tr><th>First Name</th><th>Last Name</th><th>Birth Date</th></tr>")
			Do
				htmlContent.append("<tr>").append("<td>").append(person.getFirstName()).append("</td>").append("<td>").append(person.getLastName()).append("</td>").append("<td>").append(person.getBirthDate()).append("</td>").append("</tr>")
			Loop
			htmlContent.append("</table>")
			' Create PDF from the HTML content
			Dim pdf As PdfDocument = PdfDocument.renderHtmlAsPdf(htmlContent.toString())
			pdf.saveAs("persons.pdf")
			System.out.println("PDF created successfully from JSON data!")
		Catch e As Exception
			e.printStackTrace()
		End Try
	End Sub
End Class
Friend Class Person
	Private firstName As String
	Private lastName As String
	Private birthDate As String
	' Constructors, getters, and setters omitted for brevity
	Public Function getFirstName() As String
		Return firstName
	End Function
	Public Sub setFirstName(ByVal firstName As String)
		Me.firstName = firstName
	End Sub
	Public Function getLastName() As String
		Return lastName
	End Function
	Public Sub setLastName(ByVal lastName As String)
		Me.lastName = lastName
	End Sub
	Public Function getBirthDate() As String
		Return birthDate
	End Function
	Public Sub setBirthDate(ByVal birthDate As String)
		Me.birthDate = birthDate
	End Sub
End Class
VB   C#

Archivo JSON de entrada

Jackson Java (Cómo funciona para desarrolladores): Figura 7 - Ejemplo de datos JSON de entrada

Archivo PDF de salida

Jackson Java (Cómo funciona para desarrolladores): Figura 8 - Salida utilizando IronPDF para generar una tabla con Jackson convirtiendo los datos JSON

Conclusión

Jackson es una herramienta indispensable para los desarrolladores de Java que trabajan con datos JSON. Su versatilidad, rendimiento y facilidad de uso lo convierten en una elección preferida para el procesamiento de JSON. Cuando se combina con IronPDF, se vuelve aún más poderoso, permitiendo a los desarrolladores convertir fácilmente datos JSON en documentos PDF bien formateados. Al integrar estas dos bibliotecas, puedes optimizar tus flujos de trabajo de procesamiento de datos e informes, creando PDFs dinámicos y de apariencia profesional con un esfuerzo mínimo. El ecosistema de Java, incluido el proyecto Jackson databind, evoluciona constantemente con versiones menores y actualizaciones importantes. Para garantizar que su proyecto utilice las herramientas más recientes, revise siempre el repositorio central de Maven para obtener las últimas versiones de Jackson y las actualizaciones de números de versión.

Para obtener más información sobre cómo renderizar HTML como PDF, visite el Descripción general de IronPDF. Para obtener más detalles sobre Jackson core y Jackson annotations, haga clic en los enlaces externos y consulte el sitio oficial. Documentación de Jackson.

< ANTERIOR
Biblioteca Cliente HTTP de Google para Java (Cómo Funciona para Desarrolladores)
SIGUIENTE >
Apache Commons Mathematics (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.9 acaba de salir

Descarga gratuita de Maven Ver licencias >