跳至頁尾內容
.NET 幫助

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

在現代軟體開發的領域中,資料交換格式在促成不同系統間的溝通上扮演著重要的角色。 JSON (JavaScript Object Notation,JavaScript 物件符號) 就是其中一種廣受歡迎的格式。

C# 開發人員經常需要處理 JSON 數據,為了促進順利交互,C# 提供了一個強大的工具——C# JSON 序列化程式。

在本文中,我們將討論什麼是 JSON 序列化及其用途。 此外,我們還將嘗試借助 IronPDF PDF Library 的範例來瞭解 JSON 序列化過程。

1.瞭解 C# JSON 序列化器。

C# JSON Serializer 是將 C# 物件轉換為其 JSON 表示形式的元件,反之亦然。 當 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.DataContractJsonSerializer

此序列化器是 System.Runtime.Serialization.Json 命名空間的一部分,並使用 Data Contract 屬性來控制序列化程序。

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.JavaScriptSerializer

此序列化器位於 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# 中,用於序列化的序列化器通常也可以用於反序列化。 讓我們以使用 Json.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.介紹 IronPDF 的 C#。

現在我們對 C# JSON 序列化有了紮實的了解,讓我們來探索 IronPDF C# Library 的整合,這是一個用於在 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

安裝之後,您就可以在 C# 應用程式中使用 IronPDF 函式庫來執行各種 PDF 相關工作。

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

現在,讓我們探討一個實例,說明如何將 C# JSON 序列化與 IronPDF 無縫整合。 考慮一個情況:您有一組資料需要呈現在 PDF 報告中。

資料最初儲存為 C# 物件,在使用 IronPDF 嵌入 PDF 文件之前,需要轉換為 JSON 格式。

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 類代表報告中每個部分的資料結構。 data 清單包含此類別的實例。

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

5.4.輸出

C# Json Serializer (How It Works For Developers) 圖 1

6.結論

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

無論您是處理網頁 API、組態設定,或是與其他語言的系統整合,瞭解並善用 C# JSON 序列化都能大幅提升應用程式的效率與彈性。

說到用 C# 處理 PDF,IronPDF 提供了一個強大的解決方案,可用於建立、處理和渲染 PDF 文件。

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

隨著軟體開發世界的不斷演進,掌握這些工具對於建立強大且可互操作的解決方案變得越來越重要。

IronPDF 提供 免費試用授權,這是測試和熟悉 C# PDF Library IronPDF定價的絕佳機會,Lite 版本的定價從 $799 起。

要瞭解如何開始使用 IronPdf,請造訪 IronPDF 文件

常見問題解答

如何在C#中將HTML轉換為PDF?

您可以使用 IronPDF 的RenderHtmlAsPdf方法將 HTML 字串轉換為 PDF。您也可以使用RenderHtmlFileAsPdf將 HTML 檔案轉換為 PDF。

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

C# 中的 JSON 序列化是將 C# 物件轉換為其 JSON 表示形式的過程,這對於應用程式與外部系統之間的資料交換至關重要。因此,它對於 Web API 和組態設定等場景來說是必不可少的工具。

有哪些主要的 C# JSON 序列化器?

主要的 C# JSON 序列化器有 DataContractJsonSerializer、JavaScriptSerializer 和 Json.NET (Newtonsoft.Json),每個序列化器提供獨特的功能,適用於不同的使用場景。

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

您可以將 C# 物件序列化為 JSON 格式,然後利用 IronPDF 的 HTML 渲染功能將此 JSON 資料嵌入 PDF 文件中。

我可以將JSON字串轉換回C#物件嗎?如何轉換?

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

IronPDF 在 C# 中從 JSON 產生 PDF 的過程中扮演什麼角色?

IronPDF 允許開發者透過渲染 HTML 內容來建立 PDF,其中可以包含 JSON 資料。這種整合對於產生動態的、資料驅動的 PDF 非常有用。

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

您可以使用 NuGet 套件管理器將相關的庫包(例如 IronPDF)新增至 C# 專案中,從而在 C# 專案中安裝 PDF 庫。

JSON序列化如何增強系統間的互通性?

JSON 序列化透過提供一種與語言無關的資料格式來增強互通性,使不同的系統(可能使用各種語言開發)能夠無縫地交換資料。

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

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

在 C# 中使用 IronPDF 進行 JSON 序列化的實際例子是什麼?

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

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

Jacob Mellor 是 Iron Software 的首席技術官,也是一位富有遠見的工程師,率先開發了 C# PDF 技術。作為 Iron Software 核心程式碼庫的最初開發者,他自公司成立之初便參與塑造了其產品架構,並與執行長 Cameron Rimington 一起將其發展成為一家擁有 50 多名員工、服務於 NASA、特斯拉和全球政府機構的公司。

Jacob 於 1998 年至 2001 年在曼徹斯特大學獲得土木工程一級榮譽學士學位。 1999 年,他在倫敦創辦了自己的第一家軟體公司;2005 年,他創建了自己的第一個 .NET 元件。此後,他專注於解決微軟生態系統中的複雜問題。

他的旗艦產品 IronPDF 和 IronSuite .NET 庫在全球 NuGet 上的安裝量已超過 3000 萬次,其基礎程式碼持續為全球開發者工具提供支援。憑藉 25 年的商業經驗和 41 年的程式設計專長,Jacob 始終致力於推動企業級 C#、Java 和 Python PDF 技術的創新,同時指導下一代技術領導者。