JAVA-HILFE

Jackson Java (Wie es für Entwickler funktioniert)

Veröffentlicht 29. September 2024
Teilen Sie:

Im Bereich der modernen Programmierung ist die Handhabung von Daten in Form von JSON (JavaScript-Objekt-Notation) ist zu einer entscheidenden Aufgabe geworden. Die Einfachheit und Benutzerfreundlichkeit von JSON macht es zu einer beliebten Wahl für den Datenaustausch zwischen einem Server und einem Client. Für Java-Entwickler erweist sich die Jackson-Bibliothek als mächtiges Werkzeug für die Verarbeitung von JSON. Dieser Artikel befasst sich mit den Funktionen, der Nutzung und den Vorteilen von Jackson Java und liefert Codebeispiele, um seine Fähigkeiten zu veranschaulichen. Zusätzlich werden wir untersuchen IronPDF für Java und zeigen Sie, wie Sie es mit Jackson integrieren, um PDF-Dokumente aus JSON-Daten zu erstellen.

Was ist Jackson?

Jackson ist ein leistungsstarker JSON-Prozessor für Java. Es bietet umfassende Unterstützung für JSON und stellt eine Reihe von Tools zur Verfügung, um Java-Objekte in JSON zu serialisieren und JSON in Java-Objekte zu deserialisieren. Entwickelt von FasterXML, wird Jackson aufgrund seiner Robustheit, Flexibilität und Benutzerfreundlichkeit in der Java-Community häufig genutzt.

Kernfunktionen von Jackson

  1. Datenbindung: Jackson ist hervorragend darin, Java-Objekte in JSON umzuwandeln und umgekehrt, sodass die Serialisierung und Deserialisierung von Daten unkompliziert ist.

  2. Baummodell: Diese Funktion ermöglicht das Parsen von JSON in eine baumartige Struktur, wodurch die Manipulation von JSON-Daten ohne Bindung an bestimmte Java-Objekte ermöglicht wird.

  3. Streaming-API: Für die Verarbeitung großer JSON-Dateien bietet Jackson eine Low-Level-API, die JSON-Inhalte als diskrete Token liest und schreibt.

  4. Unterstützung von Annotations: Jackson unterstützt verschiedene Annotations, um die Serialisierungs- und Deserialisierungsprozesse zu steuern und eine feinkörnige Kontrolle über die JSON-Verarbeitung zu ermöglichen.

    1. Erweiterbarkeit: Mit Modulen für verschiedene Datenformate und zusätzliche Funktionalität ist Jackson hochgradig erweiterbar.

    Jackson Java (Wie es für Entwickler funktioniert): Abbildung 1

Erste Schritte mit Jackson

Um Jackson in Ihrem Java-Projekt zu verwenden, müssen Sie die erforderlichen Abhängigkeiten hinzufügen. Für Benutzer, die Maven verwenden, fügen Sie folgenden Code zu Ihrer pom.xml hinzu:

<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#

Grundlegende Verwendung von Jackson

1. Datenbindung

Die häufigste Verwendung von Jackson besteht darin, JSON-Daten an Java-Objekte zu binden. (POJOs) und vice versa. Hier ist ein einfaches Beispiel, um dies zu demonstrieren:

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 (Wie es für Entwickler funktioniert): Abbildung 2 - Beispielausgabe, die JSON-Daten an Java-Objekte bindet

2. Baumstruktur-Modell

Das Baum-Modell von Jackson ist nützlich zum Verarbeiten von JSON-Daten, ohne Java-Klassen erstellen zu müssen. Hier ist ein Beispiel:

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 (Wie es für Entwickler funktioniert): Abbildung 3 - Direkte Änderung der JSON-Daten ohne Verwendung von Java-Klassen

3. Streaming-API

Zum Verarbeiten großer JSON-Dateien ist die Streaming-API effizient:

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#

JSON-Datei eingeben

Jackson Java (Wie es für Entwickler funktioniert): Abbildung 4 - Beispiel für JSON-Eingabedaten

Ausgabe Bild

Jackson Java (Wie es für Entwickler funktioniert): Abbildung 5 - Beispielausgabefelder nach der Verarbeitung

Einführung in IronPDF for Java

IronPDF ist eine umfassende Bibliothek zum Erstellen, Bearbeiten und Rendern von PDF-Dokumenten in Java. Es bietet eine einfache API zur Erstellung von PDFs aus verschiedenen Quellen, wie HTML, URLs oder bestehenden Dokumenten. IronPDF ist besonders nützlich, wenn Sie PDFs aus JSON-Daten erstellen müssen, die von Jackson verarbeitet wurden. Zum Beispiel, wenn ein Entwickler eine Spring Boot-Anwendung erstellt, die das Generieren von Berichten basierend auf Daten beinhaltet, kann IronPDF den Arbeitsablauf erheblich vereinfachen.

Jackson Java (Wie es für Entwickler funktioniert): Abbildung 6 - IronPDF-Startseite: Die Java-PDF-Bibliothek

Hinzufügen von IronPDF zu Ihrem Projekt

Um IronPDF in Ihrem Projekt zu verwenden, fügen Sie die folgende Abhängigkeit hinzu:

<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#

Integration von Jackson mit IronPDF

Indem wir Jackson und IronPDF kombinieren, können wir eine leistungsstarke Lösung zur Erstellung von PDF-Dokumenten aus JSON-Daten entwickeln. Unten ist ein umfassendes Beispiel, das JSON-Daten liest, sie mit Jackson verarbeitet und ein PDF-Dokument mit IronPDF erstellt.

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#

Eingabe-JSON-Datei

Jackson Java (Wie es für Entwickler funktioniert): Abbildung 7 - Beispiel-JSON-Eingabedaten

PDF-Datei ausgeben

Jackson Java (Wie es für Entwickler funktioniert): Abbildung 8 - Ausgabe unter Verwendung von IronPDF zur Erstellung einer Tabelle mit der Umwandlung der JSON-Daten durch Jackson.

Schlussfolgerung

Jackson ist ein unverzichtbares Werkzeug für Java-Entwickler, die mit JSON-Daten arbeiten. Seine Vielseitigkeit, Leistung und Benutzerfreundlichkeit machen es zu einer bevorzugten Wahl für die JSON-Verarbeitung. In Kombination mit IronPDF wird es noch leistungsfähiger und ermöglicht Entwicklern, JSON-Daten problemlos in gut formatierte PDF-Dokumente zu konvertieren. Durch die Integration dieser beiden Bibliotheken können Sie Ihre Datenverarbeitungs- und Berichtsworkflows optimieren und dynamische, professionell aussehende PDFs mit minimalem Aufwand erstellen. Das Java-Ökosystem, einschließlich des Jackson-Databind-Projekts, entwickelt sich ständig mit kleinen Versionen und großen Updates weiter. Um sicherzustellen, dass Ihr Projekt die neuesten Tools verwendet, überprüfen Sie stets das zentrale Maven-Repository auf die neuesten Jackson-Versionen und Versionsnummern-Updates.

Um mehr darüber zu erfahren, wie HTML als PDF gerendert wird, besuchen Sie die IronPDF-Übersicht. Weitere Einzelheiten zu Jackson Core und Jackson-Annotationen finden Sie, indem Sie auf die externen Links klicken und die offizielle Dokumentation einsehen. Jackson-Dokumentation.

< PREVIOUS
Google HTTP-Client-Bibliothek für Java (Wie sie für Entwickler funktioniert)
NÄCHSTES >
Apache Commons Mathematics (Wie es für Entwickler funktioniert)

Sind Sie bereit, loszulegen? Version: 2024.9 gerade veröffentlicht

Gratis Maven Download Lizenzen anzeigen >