.NET 帮助

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

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

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

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

在本文中,我们将讨论JSON 序列化例如:.NET、Java、Python 或 Node js。 此外,我们还将尝试借助一个示例来理解 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; }
}
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# 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.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
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#中介绍IronPDF

既然我们已经对 C# JSON 序列化有了扎实的了解,下面就让我们来探讨如何整合IronPDF C# 库该项目是一个功能强大的库,用于在 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# JSON 序列化器

现在,让我们来探讨一个如何将 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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

在本例中,ReportData 类表示报告中每个部分的数据结构。 数据列表包含该类的实例。

使用 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 定价Lite 版本的定价从 $749 起。

要了解如何开始使用 IronPDF,请访问IronPDF文档.

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

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

免费NuGet下载 总下载量: 11,781,565 查看许可证 >