在 C# 中,常见的 JSON 序列化和反序列化方式可以借助不同的库来实现,下面为你分别介绍使用
System.Text.Json 和
Newtonsoft.Json(
Json.NET)这两个库的具体示例。
System.Text.Json 是.NET Core 3.0 及更高版本中内置的 JSON 处理库,它性能出色且使用方便。
using System;
using System.Text.Json;
// 定义一个用于序列化和反序列化的类
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
public int Year { get; set; }
}
class Program
{
static void Main()
{
// 创建一个 Book 对象
Book book = new Book
{
Title = "C# Programming",
Author = "John Doe",
Year = 2023
};
// 序列化对象为 JSON 字符串
string jsonString = JsonSerializer.Serialize(book);
Console.WriteLine("序列化后的 JSON 字符串:");
Console.WriteLine(jsonString);
// 反序列化 JSON 字符串为对象
Book deserializedBook = JsonSerializer.Deserialize<Book>(jsonString);
Console.WriteLine("\n反序列化后的对象信息:");
Console.WriteLine($"Title: {deserializedBook.Title}");
Console.WriteLine($"Author: {deserializedBook.Author}");
Console.WriteLine($"Year: {deserializedBook.Year}");
}
}
- 定义类:定义了
Book 类,包含 Title、Author 和 Year 三个属性。
- 序列化:使用
JsonSerializer.Serialize 方法将 Book 对象转换为 JSON 字符串。
- 反序列化:使用
JsonSerializer.Deserialize<T> 方法将 JSON 字符串转换回 Book 对象,其中 T 为目标对象的类型。
Newtonsoft.Json 是一个功能强大且广泛使用的第三方 JSON 处理库,支持多种特性和自定义配置。
using Newtonsoft.Json;
using System;
// 定义一个用于序列化和反序列化的类
public class Movie
{
public string Name { get; set; }
public string Director { get; set; }
public int ReleaseYear { get; set; }
}
class Program
{
static void Main()
{
// 创建一个 Movie 对象
Movie movie = new Movie
{
Name = "The Dark Knight",
Director = "Christopher Nolan",
ReleaseYear = 2008
};
// 序列化对象为 JSON 字符串
string json = JsonConvert.SerializeObject(movie);
Console.WriteLine("序列化后的 JSON 字符串:");
Console.WriteLine(json);
// 反序列化 JSON 字符串为对象
Movie deserializedMovie = JsonConvert.DeserializeObject<Movie>(json);
Console.WriteLine("\n反序列化后的对象信息:");
Console.WriteLine($"Name: {deserializedMovie.Name}");
Console.WriteLine($"Director: {deserializedMovie.Director}");
Console.WriteLine($"ReleaseYear: {deserializedMovie.ReleaseYear}");
}
}
- 安装依赖:在使用
Newtonsoft.Json 之前,需要通过 NuGet 包管理器安装 Newtonsoft.Json 包。
- 定义类:定义了
Movie 类,包含 Name、Director 和 ReleaseYear 三个属性。
- 序列化:使用
JsonConvert.SerializeObject 方法将 Movie 对象转换为 JSON 字符串。
- 反序列化:使用
JsonConvert.DeserializeObject<T> 方法将 JSON 字符串转换回 Movie 对象,其中 T 为目标对象的类型。
System.Text.Json 是.NET 内置的 JSON 处理库,性能较好,适合在.NET Core 3.0 及更高版本的项目中使用。
Newtonsoft.Json 功能丰富,社区支持广泛,在老项目或者需要更多自定义配置的场景中使用较多。