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 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);
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);
}
}
}
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
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
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
3. 何時使用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}");
}
}
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
5. 在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");
}
}
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包:
Install-Package IronPdf
安裝後,您可以在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");
}
}
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文件。
常見問題
如何在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),每個都提供了適合不同用例的獨特功能。
如何在C#中將JSON資料嵌入到PDF文件中?
您可以將C#物件序列化為JSON格式,然後使用IronPDF利用其HTML渲染能力將這些JSON資料嵌入到PDF文件中。
我可以將JSON字串轉換回C#物件嗎?如何做到的?
是的,您可以通過反序列化的過程將JSON字串轉換回C#物件。Json.NET(Newtonsoft.Json)提供了強大的功能用於將JSON反序列化為C#物件。
IronPDF在從JSON生成PDF中扮演什麼角色?
IronPDF允許開發者通過渲染HTML內容來建立PDF,這些內容可以包括JSON資料。這種整合有助於生成動態的、資料驅動的PDF。
如何在C#項目中安裝PDF程式庫?
您可以使用NuGet套件管理器將相關的程式庫包(如IronPDF)新增到您的項目中來安裝PDF程式庫。
JSON序列化如何增強系統之間的互操作性?
JSON序列化通過提供一種語言不可知的資料格式增強互操作性,允許可能由不同語言開發的不同系統無縫地交換資料。
使用Json.NET進行C#中JSON序列化的好處是什麼?
Json.NET(Newtonsoft.Json)提供靈活性、高性能和全面的功能集,這使得它成為C#應用程式中進行JSON序列化的首選。
使用IronPDF和JSON序列化在C#中的一個實際範例是什麼?
一個實際範例是將C#物件轉換成JSON格式,然後使用IronPDF將此JSON嵌入到PDF文件中,這樣就可以建立一個易於共享和列印的動態報告。




