
C# Json 序列化(开发者如何使用)
在现代软件开发领域,数据交换格式在实现不同系统之间的通信中起着至关重要的作用。 其中一种获得广泛流行的格式是JSON(JavaScript对象表示法)。
C# 开发者经常发现自己需要处理 JSON 数据,为了便于顺畅的交互,C# 提供了一个强大的工具 - C# JSON 序列化器。
在本文中,我们将讨论什么是JSON序列化及其用途。 此外,我们将通过使用IronPDF PDF库的示例来理解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 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}");
}
}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#库的集成,这是一款处理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");
}
}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包:
安装后,您可以使用IronPDF库在您的C#应用程序中执行各种PDF相关任务。
5.2. 将C# JSON序列化器与IronPDF代码结合使用
现在,让我们探索一个如何将C# JSON序列化无缝集成到IronPDF中的实际示例。 考虑一个场景,您有一个数据集合需要在PDF报告中展示。
数据最初存储为C#对象,需要在嵌入到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库IronPDF定价的绝佳机会,定价从$999起,适用于Lite版。
要了解如何开始使用IronPDF,请访问IronPDF文档。

Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。
相关文章


