JAVA 幫助

Jackson Java(它如何為開發者工作)

發佈 2024年9月29日
分享:

在現代程式設計領域中,處理 JSON 形式的數據 (JavaScript 物件表示法) 已成為一項重要的任務。 JSON 的簡單性和易用性使其成為伺服器和客戶端之間數據交換的流行選擇。 對於 Java 開發者來說,Jackson 庫是一個用於 JSON 處理的強大工具。 本文深入探討 Jackson Java 的功能、用法和優勢,並提供代碼範例以說明其功能。 此外,我們將探討 IronPDF 適用於 Java,並演示如何將其與 Jackson 集成以從 JSON 數據生成 PDF 文檔。

什麼是Jackson?

Jackson 是一個高效能的 JSON 處理器,用於 Java。 它提供對 JSON 的全面支援,提供一整套工具來將 Java 對象序列化為 JSON,並將 JSON 反序列化為 Java 對象。 由FasterXML開發的Jackson,由於其強大的功能、靈活性和易用性,在Java社區中被廣泛使用。

Jackson的核心功能

  1. 資料綁定:Jackson 擅長將 Java 物件轉換為 JSON,反之亦然,使得序列化和反序列化資料變得簡單明瞭。

  2. 樹模型:此功能允許將 JSON 解析為類似樹狀的結構,從而能夠操作 JSON 數據而無需將其綁定到特定的 Java 對象。

  3. Streaming API:對於處理大型 JSON 檔案,Jackson 提供了一個低階 API,將 JSON 內容作為分離的標記來讀取和寫入。

  4. 註解支援:Jackson 支援各種註解來控制序列化和反序列化過程,提供對 JSON 處理的細微控制。

    1. 擴展性:透過支援各種資料格式的模組以及附加功能,Jackson 具有高度的擴展性。

    Jackson Java(對開發人員的運作方式):圖 1

開始使用Jackson

要開始在您的 Java 專案中使用 Jackson,您需要添加必要的相依性。 對於使用 Maven 的用戶,將以下代碼添加到您的 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#

Jackson 的基本使用

1. 資料綁定

Jackson 最常見的用途是將 JSON 數據綁定到 Java 對象。 (POJOs) 反之亦然。 以下是一個簡單明了的示例來展示這一點:

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(對開發人員的運作方式):圖2 - 範例輸出將 JSON 數據綁定到 Java 對象

2. 樹模型

Jackson 的樹模型對於不需要創建 Java 類別就能操作 JSON 數據非常有用。 這是個例子:

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(開發者工作原理):圖 3 - 直接修改 JSON 數據而不使用 Java 類別

3. 流式 API

為了處理大型 JSON 文件,流式 API 是有效的:

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 檔案

Jackson Java(如何適用於開發者):圖4 - 範例輸入 JSON 數據

輸出圖像

Jackson Java(它如何為開發者工作):圖5 - 處理後的示例輸出數據字段

介紹 IronPDF for Java

IronPDF 是一個全面的庫,用於在 Java 中創建、編輯和呈現 PDF 文件。 它提供了一個簡單的 API,可以從不同的來源生成 PDF,例如 HTML、網址或現有文件。 IronPDF 特別適合在需要從由 Jackson 處理的 JSON 數據中創建 PDF 時使用。例如,如果開發者正在創建一個涉及基於數據生成報告的 Spring Boot 應用程式,IronPDF 可以顯著簡化工作流程。

Jackson Java(對開發人員的運作方式):圖6 - IronPDF 主頁:Java PDF 庫

將 IronPDF 添加到您的專案中

要在您的專案中使用IronPDF,請添加以下相依性:

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

將Jackson整合到IronPDF中

結合 Jackson 和 IronPDF,我們可以創建一個強大的解決方案,從 JSON 數據生成 PDF 文件。 以下是一個全面的範例,使用 Jackson 處理 JSON 數據並通過 IronPDF 生成 PDF 文件。

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#

輸入 JSON 文件

Jackson Java(對開發人員的運作方式):圖 7 - 範例輸入 JSON 數據

輸出 PDF 文件

Jackson Java(對開發者的運作方式):圖8 - 使用IronPDF生成表格,Jackson將JSON數據轉換

結論

Jackson 是 Java 開發人員處理 JSON 數據時不可或缺的工具。 它的多功能性、性能和易用性使其成為 JSON 處理的首選。 當與 IronPDF 結合時,它變得更加強大,使開發人員可以輕鬆地將 JSON 數據轉換為格式良好的 PDF 文件。 透過整合這兩個函式庫,您可以簡化數據處理和報告的工作流程,以最小的努力創建動態且專業外觀的 PDF。 Java 的生態系統,包括 Jackson databind 專案,不斷隨著小版本和重大更新而演進。 為確保您的專案使用最新工具,請務必查看中央 Maven 資料庫以獲取最新的 Jackson 發布版本和版本號更新。

要了解更多有關如何將 HTML 呈現為 PDF 的資訊,請造訪 IronPDF 概述. 如需有關 Jackson 核心和 Jackson 註解的更多詳細資訊,請點擊外部連結並參考官方資料。 Jackson文件說明.

< 上一頁
Google HTTP Client Library for Java(開發者如何使用)
下一個 >
Apache Commons 數學庫(如何為開發者運作)

使用 Maven 安裝

版本: 2024.9.1

<dependency>
  <groupId>com.ironsoftware</groupId>
  <artifactId>ironpdf</artifactId>
  <version>2024.9.1</version>
</dependency>

準備開始了嗎? 版本: 2024.9 剛剛發布

免費 Maven 下載 查看許可證 >