.NET 帮助

C# Json 序列化器(开发人员如何使用)

发布 2023年十二月12日
分享:

在现代软件开发领域,数据交换格式在实现不同系统之间的通信方面发挥着至关重要的作用。其中一种广受欢迎的格式是 JSON (JavaScript 对象符号).

C# 开发人员经常发现自己在处理 JSON 数据,为了促进顺利交互,C# 提供了一个强大的工具 - C# JSON 序列化器。

在本文中,我们将讨论什么是 JSON 序列化 及其用途。此外,我们还将借助一个 PDF 库示例来理解 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&num 类型;JSON 序列化器和代码示例

C# 提供了多种执行 JSON 序列化的方法,每种方法都有自己的特性和用例。以下是 C# 中一些常用的 JSON 序列化方法

2.1.数据契约 JsonSerializer

该序列化器是 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.NETNewtonsoft.Json,通常被称为 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.网络应用程序接口

在开发与客户端应用程序通信的网络 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}");
    }
}
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.介绍 C&num 中的 IronPDF;

既然我们已经对 C# JSON 序列化有了扎实的了解,那么让我们来探索一下如何将 IronPDFIronPDF 是一个功能强大的库,用于在 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

安装后,您可以使用 IronPDF 库在 C# 应用程序中执行各种与 PDF 相关的任务。

5.2.在 IronPDF 代码中使用 C&num;JSON 序列化器

现在,让我们通过一个实际案例来了解 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 起价,精简版从 $749 起。

要了解如何开始使用 IronPDF,请访问 这里.

< 前一页
C#中的SOLID原则(它如何为开发人员工作)
下一步 >
C# 窗体(开发者如何使用)

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 10,746,704 查看许可证 >