跳過到頁腳內容
.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; }
}
Public Class Person
	Public Property Name() As String
	Public Property Age() As Integer
End Class
$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);
Dim person As New Person With {
	.Name = "John Doe",
	.Age = 30
}
Dim json As String = 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);
        }
    }
}
Imports System
Imports System.IO
Imports System.Runtime.Serialization.Json
Imports System.Text

Public Class Person
	Public Property Name() As String
	Public Property Age() As Integer
End Class

Friend Class Program
	Shared Sub Main()
		Dim person As New Person With {
			.Name = "John Doe",
			.Age = 30
		}
		Dim serializer As New DataContractJsonSerializer(GetType(Person))
		Using stream As New MemoryStream()
			serializer.WriteObject(stream, person)
			Dim json As String = Encoding.UTF8.GetString(stream.ToArray())
			Console.WriteLine("Serialized JSON using DataContractJsonSerializer:")
			Console.WriteLine(json)
		End Using
	End Sub
End Class
$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);
    }
}
Imports System
Imports System.Web.Script.Serialization

Public Class Person
	Public Property Name() As String
	Public Property Age() As Integer
End Class

Friend Class Program
	Shared Sub Main()
		Dim person As New Person With {
			.Name = "John Doe",
			.Age = 30
		}
		Dim serializer As New JavaScriptSerializer()
		Dim json As String = serializer.Serialize(person)
		Console.WriteLine("Serialized JSON using JavaScriptSerializer:")
		Console.WriteLine(json)
	End Sub
End Class
$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);
    }
}
Imports System
Imports Newtonsoft.Json

Public Class Person
	Public Property Name() As String
	Public Property Age() As Integer
End Class

Friend Class Program
	Shared Sub Main()
		Dim person As New Person With {
			.Name = "John Doe",
			.Age = 30
		}
		Dim json As String = JsonConvert.SerializeObject(person)
		Console.WriteLine("Serialized JSON using Json.NET (Newtonsoft.Json):")
		Console.WriteLine(json)
	End Sub
End Class
$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}");
    }
}
Imports System
Imports Newtonsoft.Json

Public Class Person
	Public Property Name() As String
	Public Property Age() As Integer
End Class

Friend Class Program
	Shared Sub Main()
		Dim json As String = "{""Name"":""John Doe"",""Age"":30}"
		Dim deserializedPerson As Person = JsonConvert.DeserializeObject(Of Person)(json)
		Console.WriteLine("Deserialized Person:")
		Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}")
	End Sub
End Class
$vbLabelText   $csharpLabel

5. Introducing IronPDF in 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");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

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

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

		' 3. Convert a URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$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");
    }
}
Imports IronPdf
Imports Newtonsoft.Json
Imports System.Collections.Generic

Public Class ReportData
	Public Property Title() As String
	Public Property Content() As String
End Class

Public Class Program
	Shared Sub Main()
		Dim data = New List(Of ReportData) From {
			New ReportData With {
				.Title = "Section 1",
				.Content = "Lorem ipsum dolor sit amet."
			},
			New ReportData With {
				.Title = "Section 2",
				.Content = "Consectetur adipiscing elit."
			}
		}

		' Convert data to JSON format
		Dim jsonData As String = JsonConvert.SerializeObject(data)

		' Create a PDF document using IronPDF
		Dim renderer = New ChromePdfRenderer()

		' Embed JSON data into the PDF
		Dim htmlContent As String = $"<html><body><h4>{jsonData}</h4></body></html>"
		Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)

		' Save or display the PDF as needed
		pdfDocument.SaveAs("Report.pdf")
	End Sub
End Class
$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 庫的絕佳機會。 IronPDF 定價從精簡版 $999 起。

要瞭解如何開始使用 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技術的創新,同時指導下一代技術領導者。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我