.NET 幫助

C# Json 序列化工具(開發人員如何使用)

發佈 2023年12月12日
分享:

在現代軟件開發領域中,數據交換格式在促進不同系統之間的通信方面發揮著關鍵作用。其中一種已經獲得極大普及的格式是 JSON (JavaScript 物件表示法)C# 開發人員經常需要處理 JSON 數據,為了促進順暢的互動,C# 提供了一個強大的工具 - C# JSON Serializer。

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

1. 理解 C# JSON 序列化程式

C# JSON 序列化程式是一個將 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
VB   C#

使用 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)
VB   C#

生成的JSON字串將會是{"姓名":"約翰·多伊","年齡":30}, 用 JSON 格式表示人對象。

2. C# JSON 序列化器的類型及代碼範例

C# 提供了多種進行 JSON 序列化的方法,每種方法都有其各自的特點和用例。以下是 C# 中一些常用的 JSON 序列化方法。

2.1. DataContractJsonSerializer

此序列化器是 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));
        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));
        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))
		Dim 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 Sub
End Class
VB   C#

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

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

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

瞭解何時使用 C# JSON 序列化對於高效且無錯誤的數據交換至關重要。以下是使用 JSON 序列化器有利的常見情況:

3.1. Web APIs

在開發與客戶端應用程序通訊的 Web APIs 時,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 user
{
    public string firstname { 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 user
{
    public string firstname { 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 user
	Public Property firstname() 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
VB   C#

5. 介紹IronPDF在C#中的使用

現在我們已經對C# JSON序列化有了深入的理解,讓我們來探討整合IronPDF的過程。 IronPDF這是一個用於處理 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 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 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 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 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 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 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 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 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 URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
VB   C#

要開始使用 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.Converters;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Utilities;
using System.Collections.Generic;
using Newtonsoft.Json.Schema;// json schema
using Newtonsoft.Json;
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 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.Converters;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Utilities;
using System.Collections.Generic;
using Newtonsoft.Json.Schema;// json schema
using Newtonsoft.Json;
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 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.Converters
Imports Newtonsoft.Json.Linq
Imports Newtonsoft.Json.Utilities
Imports System.Collections.Generic
Imports Newtonsoft.Json.Schema ' json schema
Imports Newtonsoft.Json
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 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
VB   C#

在這個範例中,ReportData 類別代表報告中每一個部分的資料結構。data 清單包含這個類別的實例。

使用 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 起價為 $liteLicense 的輕量版。

請訪問以瞭解如何開始使用IronPDF 這裡.

< 上一頁
Solid 原則 C#(它如何為開發人員工作)
下一個 >
C# 表單(對開發人員的運作方式)

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

免費 NuGet 下載 總下載次數: 10,746,704 查看許可證 >