.NET 幫助

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

里根普恩
里根普恩
2023年12月12日
分享:

在現代軟體開發領域,資料交換格式在促進不同系統之間的通信中發揮著關鍵作用。 其中一種獲得極大流行的格式是JSON(JavaScript 物件表示法).

C#開發人員經常需要處理JSON數據,為了促進順暢的互動,C#提供了一個強大的工具 - C# JSON序列化器。

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

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; }
}

使用 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);

生成的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);
    }
}

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);
    }
}

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);
    }
}

3. 什麼時候使用 C# JSON 序列化器

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

3.1. 網頁 API

在開發與客戶端應用程式通信的網路 API 時,JSON 是數據交換的首選格式,因為它具有輕量級和易於閱讀的特性。

3.2. 配置設定

在 JSON 格式中存儲和讀取配置設置是一種常見做法。JSON 序列化簡化了在 C# 對象和 JSON 之間轉換這些設置的過程。

3.3. 互操作性

當整合使用 C# 開發的應用程式與其他語言開發的系統時,JSON 提供了一種語言中立的資料格式,確保無縫的互操作性。

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

反序列化是將 JSON 字串轉換回其等效的 C# 物件的過程。 這是在處理來自外部來源的數據時的關鍵步驟,例如網路 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}");
    }
}

5. 在 C# 中介紹 IronPDF

現在我們對 C# JSON 序列化有了很好的了解,讓我們來探索整合IronPDF C# 函式庫, 一個在 C# 中處理 PDF 的強大函式庫。 IronPDF 簡化了生成和操作 PDF 文檔的過程,是涉及 PDF 情境中的絕佳選擇。

5.1. IronPDF 概述

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

IronPDF 的HTML 轉 PDF功能是一個亮點,可維持您的版面配置和樣式。 它將網頁內容轉換為 PDF,適用於報告、發票和文檔。 您可以輕鬆地將 HTML 檔案、網址和 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");
    }
}

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

Install-Package IronPdf

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

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

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

數據最初以 C# 物件的形式儲存,需先轉換為 JSON 格式,然後使用 IronPDF 嵌入到 PDF 文件中。

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");
    }
}

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

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

5.4. 輸出

C# Json 序列化器(適用於開發者的工作原理) 圖1

6. 結論

總之,C# JSON 序列化是處理 C# 應用中數據交換的基本工具。

無論您是處理網路 API、配置設定,還是與其他語言的系統整合,理解並利用 C# JSON 序列化都能大大提升您應用程式的效率和靈活性。

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

藉由結合 C# JSON 序列化的強大功能和 IronPDF,開發人員可以將來自 C# 物件的資料無縫整合到 PDF 報告中,為其應用程式生成動態和數據驅動的 PDF 內容開辟新的可能性。

隨著軟體開發領域不斷演變,掌握這些工具對於構建穩健且具互操作性的解決方案變得越來越重要。

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

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

里根普恩
軟體工程師
Regan 畢業於雷丁大學,擁有電子工程學士學位。在加入 Iron Software 之前,他的工作角色讓他專注於單一任務;而他在 Iron Software 工作中最喜歡的是他所能承擔的工作範圍,無論是增加銷售價值、技術支持、產品開發或市場營銷。他喜歡了解開發人員如何使用 Iron Software 庫,並利用這些知識不斷改進文檔和開發產品。
< 上一頁
Solid 原則 C#(它如何為開發人員工作)
下一個 >
C# 表單(對開發人員的運作方式)