C# Programming

C#高效JSON序列化

Spread the love

JSON(JavaScript 对象表示法)是一种轻量级的数据交换格式,广泛用于 Web 应用程序和 API。C# 提供了几种有效的方法将对象转换为 JSON 字符串,简化了与其他系统的通信并实现了易于阅读的数据存储。本文探讨了三种常用的转换方法,并比较了它们的优缺点。

目录

使用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.SerializeObjectJObject.FromObject方法,因为它们具有高性能、功能丰富且灵活。请记住安装Newtonsoft.Json NuGet 包。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注