在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
在现代软件开发领域,数据交换格式在实现不同系统之间的通信方面发挥着至关重要的作用。其中一种广受欢迎的格式是 JSON (JavaScript 对象符号).
C# 开发人员经常发现自己在处理 JSON 数据,为了促进顺利交互,C# 提供了一个强大的工具 - C# JSON 序列化器。
在本文中,我们将讨论什么是 JSON 序列化 及其用途。此外,我们还将借助一个 PDF 库示例来理解 JSON 序列化过程。 IronPDF.
C# JSON 序列化器是一个将 C# 对象转换为 JSON 表示形式的组件,反之亦然。这一过程被称为序列化和反序列化,在 C# 应用程序与外部系统或服务交换数据时至关重要。
假设一个电子商务应用程序需要向移动应用程序发送产品信息。与发送移动应用程序可能无法理解的原始 C# 对象相比,应用程序可以使用 JSON 序列化器将对象转换为各种平台都能普遍识别并轻松使用的 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 字符串将是 {"姓名":"无名氏",年龄":30}以 JSON 格式表示人物对象。
C# 提供了多种执行 JSON 序列化的方法,每种方法都有自己的特性和用例。以下是 C# 中一些常用的 JSON 序列化方法
该序列化器是 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
该序列化器位于 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
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
了解何时使用 C# JSON 序列化对于高效、无差错的数据交换至关重要。以下是使用 JSON 序列化器的常见应用场景
在开发与客户端应用程序通信的网络 API 时,JSON 因其轻量级和人类可读性而成为数据交换的首选格式。
以 JSON 格式存储和读取配置设置是一种常见的做法。JSON 序列化简化了在 C# 对象和 JSON 之间转换这些设置的过程。
在将 C# 应用程序与其他语言开发的系统集成时,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
既然我们已经对 C# JSON 序列化有了扎实的了解,那么让我们来探索一下如何将 IronPDFIronPDF 是一个功能强大的库,用于在 C# 中处理 PDF。IronPDF 简化了生成和处理 PDF 文档的过程,因此是涉及 PDF 的情况下的最佳选择。
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
要开始使用 IronPDF,首先需要安装 IronPDF NuGet 软件包:
Install-Package IronPdf
安装后,您可以使用 IronPDF 库在 C# 应用程序中执行各种与 PDF 相关的任务。
现在,让我们通过一个实际案例来了解 C# JSON 序列化如何与 IronPDF 无缝集成。假设您有一组数据需要在 PDF 报告中展示。
这些数据最初存储为 C# 对象,在使用 IronPDF 将其嵌入 PDF 文档之前,需要将其转换为 JSON 格式。
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
在本例中,ReportData 类表示报告中每个部分的数据结构。data 列表包含该类的实例。
使用 JsonConvert.SerializeObject 将数据序列化为 JSON 格式,并将生成的 JSON 字符串嵌入 HTML 模板。然后使用 IronPDF 将 HTML 模板转换为 PDF 文档。
总之,C# JSON 序列化是在 C# 应用程序中处理数据交换的基本工具。
无论您是处理 Web API、配置设置,还是与其他语言的系统集成,了解并利用 C# JSON 序列化都能大大提高应用程序的效率和灵活性。
在使用 C# 处理 PDF 时,IronPDF 为创建、处理和渲染 PDF 文档提供了强大的解决方案。
通过结合 C# JSON 序列化和 IronPDF 的强大功能,开发人员可以将 C# 对象中的数据无缝集成到 PDF 报告中,为在应用程序中生成动态和数据驱动的 PDF 内容开辟了新的可能性。
随着软件开发领域的不断发展,掌握这些工具对于构建强大和可互操作的解决方案变得越来越重要。
IronPDF 提供了 免费试用 许可证,这是测试和熟悉 C# PDF 库的绝佳机会 IronPDF 起价,精简版从 $749 起。
要了解如何开始使用 IronPDF,请访问 这里.