跳過到頁腳內容
.NET幫助

C# Json 序列化(開發者的工作原理)

在現代軟體開發領域,資料交換格式在實現不同系統之間的通訊方面發揮著至關重要的作用。 JSON(JavaScript物件表示法)就是這樣一種獲得廣泛流行的格式。

C# 開發人員經常會遇到需要處理 JSON 資料的情況,為了方便進行流暢的交互,C# 提供了一個強大的工具-C# JSON 序列化器。

本文將探討JSON序列化的概念及其用途。 此外,我們將藉助IronPDF PDF 庫的範例來嘗試理解 JSON 序列化過程。

1. 理解 C# JSON 序列化器

C# JSON 序列化器是一個可以將 C# 物件轉換為其 JSON 表示形式以及將 JSON 物件轉換為 C# 物件的元件。 這個過程稱為序列化和反序列化,在 C# 應用程式與外部系統或服務之間交換資料時至關重要。

設想這樣一個場景:一個電商應用需要向行動應用發送產品資訊。與其發送行動應用程式可能無法理解的原始 C# 對象,該應用程式可以使用 JSON 序列化器將這些對象轉換為各種平台都能通用且易於讀取的 JSON 格式。

1.1. C# JSON 序列化範例

讓我們透過一個簡單的例子來說明這個概念。 假設我們有一個表示人的 C# 類別:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
$vbLabelText   $csharpLabel

使用 C# JSON 序列化,我們可以將該類別的實例轉換為 JSON 字串:

Person person = new Person { Name = "John Doe", Age = 30 };
string json = JsonConvert.SerializeObject(person);
Person person = new Person { Name = "John Doe", Age = 30 };
string json = JsonConvert.SerializeObject(person);
$vbLabelText   $csharpLabel

產生的JSON字串為{"Name":"John Doe","Age":30} ,表示 JSON 格式的人員物件。

2. C# JSON 序列化器的型別及程式碼範例

C# 提供了多種執行 JSON 序列化的方法,每種方法都有其自身的功能和用例。 以下是一些 C# 中常用的 JSON 序列化方法:

2.1. 資料契約Json序列化器

此序列化程式屬於System.Runtime.Serialization.Json命名空間,並使用資料協定屬性控制序列化過程。

using System;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Text;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        Person person = new Person { Name = "John Doe", Age = 30 };
        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Person));
        using (MemoryStream stream = new MemoryStream())
        {
            serializer.WriteObject(stream, person);
            string json = Encoding.UTF8.GetString(stream.ToArray());
            Console.WriteLine("Serialized JSON using DataContractJsonSerializer:");
            Console.WriteLine(json);
        }
    }
}
using System;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Text;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        Person person = new Person { Name = "John Doe", Age = 30 };
        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Person));
        using (MemoryStream stream = new MemoryStream())
        {
            serializer.WriteObject(stream, person);
            string json = Encoding.UTF8.GetString(stream.ToArray());
            Console.WriteLine("Serialized JSON using DataContractJsonSerializer:");
            Console.WriteLine(json);
        }
    }
}
$vbLabelText   $csharpLabel

2.2. JavaScript序列化器

此序列化器位於System.Web.Script.Serialization命名空間中,是ASP.NET的一部分,它提供了將物件序列化為 JSON 格式的簡單方法。

using System;
using System.Web.Script.Serialization;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        Person person = new Person { Name = "John Doe", Age = 30 };
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        string json = serializer.Serialize(person);
        Console.WriteLine("Serialized JSON using JavaScriptSerializer:");
        Console.WriteLine(json);
    }
}
using System;
using System.Web.Script.Serialization;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        Person person = new Person { Name = "John Doe", Age = 30 };
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        string json = serializer.Serialize(person);
        Console.WriteLine("Serialized JSON using JavaScriptSerializer:");
        Console.WriteLine(json);
    }
}
$vbLabelText   $csharpLabel

2.3. JSON .NET (Newtonsoft.Json)

Json .NET (Newtonsoft.Json)是一個廣泛使用的第三方函式庫,用於在 C# 中進行 JSON 序列化。 它兼具靈活性、高性能和豐富的功能。

using System;
using Newtonsoft.Json;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        Person person = new Person { Name = "John Doe", Age = 30 };
        string json = JsonConvert.SerializeObject(person);
        Console.WriteLine("Serialized JSON using Json.NET (Newtonsoft.Json):");
        Console.WriteLine(json);
    }
}
using System;
using Newtonsoft.Json;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        Person person = new Person { Name = "John Doe", Age = 30 };
        string json = JsonConvert.SerializeObject(person);
        Console.WriteLine("Serialized JSON using Json.NET (Newtonsoft.Json):");
        Console.WriteLine(json);
    }
}
$vbLabelText   $csharpLabel

3. 何時使用 C# JSON 序列化器

了解何時使用 C# JSON 序列化對於高效能、無錯誤的資料交換至關重要。 以下是一些使用 JSON 序列化器會受益的常見場景:

3.1. Web API

在開發與客戶端應用程式通訊的 Web API 時,由於 JSON 具有輕量級和人類可讀性等特點,因此它是資料交換的首選格式。

3.2 配置設定

以 JSON 格式儲存和讀取組態設定是一種常見做法。 JSON 序列化簡化了在 C# 物件和 JSON 之間轉換這些設定的過程。

3.3 互通性

在將 C# 應用程式與其他語言開發的系統整合時,JSON 提供了與語言無關的資料格式,確保了無縫的互通性。

4. 什麼是反序列化的 JSON 字串?

反序列化是將 JSON 字串轉換回其等效的 C# 物件的過程。 這是處理從外部來源(例如 Web API 或儲存的 JSON 資料)接收的資料時的關鍵步驟。

在 C# 中,用於序列化的相同序列化器通常也可以用於反序列化。 讓我們用一個簡單的範例來說明如何使用.NET (Newtonsoft.Json) 進行反序列化:

using System;
using Newtonsoft.Json;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        string json = "{\"Name\":\"John Doe\",\"Age\":30}";
        Person deserializedPerson = JsonConvert.DeserializeObject<Person>(json);
        Console.WriteLine("Deserialized Person:");
        Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
    }
}
using System;
using Newtonsoft.Json;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        string json = "{\"Name\":\"John Doe\",\"Age\":30}";
        Person deserializedPerson = JsonConvert.DeserializeObject<Person>(json);
        Console.WriteLine("Deserialized Person:");
        Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
    }
}
$vbLabelText   $csharpLabel

5. Introducing IronPDF in C

現在我們已經對 C# JSON 序列化有了紮實的了解,讓我們來探索IronPDF C# 庫的集成,這是一個用於在 C# 中處理 PDF 的強大庫。 IronPDF簡化了產生和操作 PDF 文件的過程,因此是涉及 PDF 的場景的絕佳選擇。

5.1. IronPDF簡介

IronPDF是一個 C# 庫,允許開發人員在其應用程式中建立、操作和渲染 PDF 文件。 無論您需要產生發票、報告或任何其他類型的 PDF 文檔, IronPDF都能提供便利且功能豐富的解決方案。

IronPDF 的HTML 轉換 PDF功能是一大亮點,它可以保留您的佈局和樣式。 它可以將網頁內容轉換為 PDF 文件,適用於報告、發票和文件。 您可以輕鬆地將 HTML 檔案、URL 和 HTML 字串轉換為 PDF。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert an HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert an HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert a URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert an HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert an HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert a URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
$vbLabelText   $csharpLabel

要開始使用IronPDF,首先需要安裝IronPDF NuGet套件:

Install-Package IronPdf

安裝完成後,您可以使用IronPDF庫在 C# 應用程式中執行各種與 PDF 相關的任務。

5.2. 將 C# JSON 序列化器與IronPDF程式碼結合使用

現在,讓我們透過一個實際的例子來探討如何將 C# JSON 序列化與IronPDF無縫整合。 設想這樣一個場景:你需要將一組資料以 PDF 報告的形式呈現出來。

資料最初以 C# 物件的形式存儲,需要先轉換為 JSON 格式,然後才能使用IronPDF將其嵌入 PDF 文件中。

5.3 範例程式碼

using IronPdf;
using Newtonsoft.Json;
using System.Collections.Generic;

public class ReportData
{
    public string Title { get; set; }
    public string Content { get; set; }
}

public class Program
{
    static void Main()
    {
        var data = new List<ReportData>
        {
            new ReportData { Title = "Section 1", Content = "Lorem ipsum dolor sit amet." },
            new ReportData { Title = "Section 2", Content = "Consectetur adipiscing elit." },
            // Add more data as needed
        };

        // Convert data to JSON format
        string jsonData = JsonConvert.SerializeObject(data);

        // Create a PDF document using IronPDF
        var renderer = new ChromePdfRenderer();

        // Embed JSON data into the PDF
        string htmlContent = $"<html><body><h4>{jsonData}</h4></body></html>";
        var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);

        // Save or display the PDF as needed
        pdfDocument.SaveAs("Report.pdf");
    }
}
using IronPdf;
using Newtonsoft.Json;
using System.Collections.Generic;

public class ReportData
{
    public string Title { get; set; }
    public string Content { get; set; }
}

public class Program
{
    static void Main()
    {
        var data = new List<ReportData>
        {
            new ReportData { Title = "Section 1", Content = "Lorem ipsum dolor sit amet." },
            new ReportData { Title = "Section 2", Content = "Consectetur adipiscing elit." },
            // Add more data as needed
        };

        // Convert data to JSON format
        string jsonData = JsonConvert.SerializeObject(data);

        // Create a PDF document using IronPDF
        var renderer = new ChromePdfRenderer();

        // Embed JSON data into the PDF
        string htmlContent = $"<html><body><h4>{jsonData}</h4></body></html>";
        var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);

        // Save or display the PDF as needed
        pdfDocument.SaveAs("Report.pdf");
    }
}
$vbLabelText   $csharpLabel

在這個例子中, ReportData類別表示報表中每個部分的資料結構。 資料列表包含此類別的實例。

使用JsonConvert.SerializeObject將資料序列化為 JSON,並將產生的 JSON 字串嵌入到 HTML 模板中。 然後使用IronPDF將此 HTML 範本轉換為 PDF 文件。

5.4 輸出

C# JSON 序列化器(開發者工作原理)圖 1

6. 結論

總之,C# JSON 序列化是 C# 應用程式中處理資料交換的基本工具。

無論您是在處理 Web API、配置設置,還是與其他語言的系統集成,了解和利用 C# JSON 序列化都可以大大提高應用程式的效率和靈活性。

在 C# 中處理 PDF 時, IronPDF提供了一個強大的解決方案,用於建立、操作和渲染 PDF 文件。

透過結合 C# JSON 序列化和IronPDF的強大功能,開發人員可以將 C# 物件中的資料無縫整合到 PDF 報告中,從而為在應用程式中產生動態和資料驅動的 PDF 內容開闢新的可能性。

隨著軟體開發領域的不斷發展,掌握這些工具對於建立強大且可互通的解決方案變得越來越重要。

IronPDF提供免費試用許可證,這是一個測試和熟悉 C# PDF 庫的絕佳機會。 IronPDF定價從精簡版 $799 起。

若要了解如何開始使用IronPDF,請造訪IronPDF文件

常見問題解答

怎樣在 C# 中將 HTML 轉換為 PDF?

您可以使用 IronPDF 的 RenderHtmlAsPdf 方法將 HTML 字符串轉換為 PDF。您還可以使用 RenderHtmlFileAsPdf 將 HTML 文件轉換為 PDF。

什麼是 C# 中的 JSON 序列化及為什麼它很重要?

C# 中的 JSON 序列化是指將 C# 物件轉換成其 JSON 表示形式的過程,這對於應用程式與外部系統間的資料交換至關重要。這使得它成為像是網頁 API 和配置設置的場景中不可或缺的工具。

有哪些主要的 C# JSON 序列化程式可用?

主要的 C# JSON 序列化程式包括 DataContractJsonSerializer、JavaScriptSerializer 和 Json.NET(Newtonsoft.Json),它們各自提供不同的功能以適合不同的使用情境。

如何將 JSON 資料嵌入 C# 的 PDF 文件中?

您可以將 C# 物件序列化成 JSON 格式,然後利用 IronPDF 的 HTML 呈現能力將此 JSON 資料嵌入到 PDF 文件中。

我可以將 JSON 字串轉回 C# 物件嗎?怎麼做?

是的,您可以透過反序列化的過程將 JSON 字串轉回 C# 物件。Json.NET(Newtonsoft.Json)提供強大的功能來將 JSON 反序列化成 C# 物件。

IronPDF 在 C# 中從 JSON 生成 PDF 的過程中起到什麼作用?

IronPDF 允許開發人員通過呈現包含 JSON 資料的 HTML 內容來創建 PDF。這種整合對於生成動態和資料驅動的 PDF 非常有用。

如何在 C# 專案中安裝 PDF 庫?

您可以通過使用 NuGet 套件管理器將相關的庫包(如 IronPDF)添加到您的項目中,從而在 C# 項目中安裝 PDF 庫。

JSON 序列化如何增強系統之間的互操作性?

JSON 序列化通過提供語言不可知的資料格式,增強了各種系統之間的互操作性,這使得可能在不同語言中開發的系統可以無縫進行資料交換。

在 C# 中使用 Json.NET 進行 JSON 序列化有哪些好處?

Json.NET(Newtonsoft.Json)提供靈活性、性能和全面的功能集,使其成為 C# 應用程式中進行 JSON 序列化的首選。

使用 IronPDF 和 JSON 序列化於 C# 中的實用範例是什麼?

一個實用範例是將 C# 物件轉換成 JSON 格式,並使用 IronPDF 將此 JSON 嵌入到 PDF 文件中,從而創建可輕鬆共享和列印的動態報告。

Jacob Mellor, Team Iron 首席技術官
首席技術官

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me