
C# Json 序列化(開發者的工作原理)
在現代軟體開發的領域中,資料交換格式在使不同系統之間的通信成為可能方面發揮著至關重要的作用。 一種在這方面獲得極大流行的格式是JSON(JavaScript物件表示法)。
C#開發人員經常需要處理JSON資料,為了促進流暢的互動,C#提供了一個強大的工具 - C# JSON序列化器。
在本文中,我們將討論什麼是JSON序列化及其用途。 同時,我們將嘗試通過IronPDF PDF Library的例子來理解JSON序列化過程。
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 Property Name() As String
Public Property Age() As Integer
End Class使用C# JSON序列化,我們可以將這個類別的實例轉換成一個JSON字串:
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)生成的JSON字串將是**{"Name":"John Doe","Age":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));
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 Class2.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);
}
}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 Class2.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);
}
}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 Class3. 何時使用C# JSON序列化器
知道何時使用C# JSON序列化對於高效且無錯誤的資料交換至關重要。 以下是一些使用JSON序列化器有益的常見情況:
3.1. Web APIs
在開發與客戶端應用程式通信的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}");
}
}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 Class5. 在C#中介紹IronPDF
現在我們已經全面理解了C# JSON序列化,讓我們來探索IronPDF C# Library的整合,這是一個強大的用於在C#中處理PDF的程式庫。 IronPDF簡化了產生和操作PDF文件的過程,使其成為涉及PDF情況的一個極佳選擇。
5.1. IronPDF概述
IronPDF是一個C#程式庫,允許開發人員在應用程式內建立、操作和呈現PDF文件。 無論您需要生成發票、報告或任何其他型別的PDF文件,IronPDF提供了一個方便且功能豐富的解決方案。
IronPDF的HTML到PDF轉換功能是一個亮點,它保持您的佈局和樣式。 它將Web內容轉換為PDF,適用於報告、發票和文件。 您可以輕鬆地將HTML文件、URLs和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");
}
}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要開始使用IronPDF,您需要首先安裝IronPDF NuGet包:
安裝後,您可以在C#應用程式中使用IronPDF程式庫執行各種PDF相關的任務。
5.2. 在IronPDF程式碼中使用C# JSON序列化器
現在,讓我們探討如何將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");
}
}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在此範例中,ReportData類代表報告中每個部分的資料結構。 data列表包含這個類的實例。
該資料使用JsonConvert.SerializeObject序列化為JSON,生成的JSON字串嵌入到HTML模板中。 然後使用IronPDF將此HTML模板轉換為PDF文件。
5.4. 輸出

6. 結論
總之,C# JSON序列化是一個用於在C#應用程式中處理資料交換的基本工具。
無論您是在處理Web API、配置設置,還是與其他語言的系統整合,理解和利用C# JSON序列化都可以顯著提升您的應用程式的效率和靈活性。
當涉及在C#中處理PDF時,IronPDF提供了一個強大的解決方案,用於建立、操作和呈現PDF文件。
通過結合C# JSON序列化和IronPDF的強大功能,開發人員可以將C#物件中的資料無縫整合到PDF報告中,開啟在應用程式中生成動態和資料驅動的PDF內容的新可能性。
隨著軟體開發的世界不斷發展,掌握這些工具對於構建強大和可互操作的解決方案變得越來越重要。
IronPDF提供一個免費試用授權,這是一個很好的機會來測試和熟悉C# PDF LibraryIronPDF定價, 定價從$999的精簡版開始。
如需了解如何開始使用IronPDF,請存取IronPDF文件。

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。
相關文章


