JSON(JavaScript 对象表示法)是一种轻量级的数据交换格式,广泛用于 Web 应用程序和 API。C# 提供了几种有效的方法将对象转换为 JSON 字符串,简化了与其他系统的通信并实现了易于阅读的数据存储。本文探讨了三种常用的转换方法,并比较了它们的优缺点。
目录
- 使用
JavaScriptSerializer
将对象转换为 JSON - 使用
JsonConvert.SerializeObject
高效地进行 JSON 序列化 - 使用
JObject.FromObject
进行细粒度控制
使用JavaScriptSerializer
将对象转换为 JSON
System.Web.Script.Serialization.JavaScriptSerializer
类提供了一种直接的 JSON 序列化方法。但是,它是一个遗留组件,缺乏现代库的功能和性能。对于新项目,通常建议使用更新的替代方案。
using System;
using System.Web.Script.Serialization;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Example
{
public static void Main(string[] args)
{
Person person = new Person { Name = "John Doe", Age = 30 };
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonString = serializer.Serialize(person);
Console.WriteLine(jsonString); // 输出: {"Name":"John Doe","Age":30}
}
}
注意:需要引用System.Web.Extensions
(通常位于 .NET Framework 程序集下)。不推荐用于 .NET Core 及更高版本。
使用JsonConvert.SerializeObject
高效地进行 JSON 序列化
Newtonsoft.Json(通常称为 Json.NET)是一个广泛使用的、高性能的 C# JSON 库。它为 JSON 序列化和反序列化提供了一个强大且功能丰富的解决方案。安装Newtonsoft.Json
NuGet 包以使用此方法。
using Newtonsoft.Json;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Example
{
public static void Main(string[] args)
{
Person person = new Person { Name = "John Doe", Age = 30 };
string jsonString = JsonConvert.SerializeObject(person);
Console.WriteLine(jsonString); // 输出: {"Name":"John Doe","Age":30}
}
}
JsonConvert.SerializeObject
简洁高效。Newtonsoft.Json 提供了广泛的自定义选项,用于处理空值、格式化等等。
使用JObject.FromObject
进行细粒度控制
也是 Newtonsoft.Json 库的一部分,JObject
类提供了对 JSON 结构的细粒度控制,然后才能进行序列化。这在序列化之前操作 JSON 表示形式时特别有用。
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Example
{
public static void Main(string[] args)
{
Person person = new Person { Name = "John Doe", Age = 30 };
JObject jsonObject = JObject.FromObject(person);
string jsonString = jsonObject.ToString();
Console.WriteLine(jsonString); // 输出: {"Name":"John Doe","Age":30}
}
}
虽然对于简单对象与JsonConvert.SerializeObject
类似,但JObject.FromObject
为复杂场景提供了更大的灵活性。您可以在最终序列化之前轻松添加、删除或修改JObject
中的属性。
结论:对于现代 C# 开发,强烈推荐使用 Newtonsoft.Json 的JsonConvert.SerializeObject
和JObject.FromObject
方法,因为它们具有高性能、功能丰富且灵活。请记住安装Newtonsoft.Json
NuGet 包。