.net Core 中如何高效的进行对象的json序列化和反序列化
时间: 2024-04-29 17:24:27 浏览: 13
在 .NET Core 中,可以使用 System.Text.Json 来进行对象的 JSON 序列化和反序列化。与 Newtonsoft.Json 相比,System.Text.Json 具有更高的性能和更低的内存消耗。
以下是使用 System.Text.Json 进行对象的 JSON 序列化和反序列化的示例代码:
1. 对象的 JSON 序列化
```
using System;
using System.Text.Json;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
Person person = new Person { Name = "Alice", Age = 30 };
string json = JsonSerializer.Serialize(person);
Console.WriteLine(json); // 输出:{"Name":"Alice","Age":30}
```
2. JSON 字符串的反序列化为对象
```
string json = "{\"Name\":\"Alice\",\"Age\":30}";
Person person = JsonSerializer.Deserialize<Person>(json);
Console.WriteLine(person.Name); // 输出:Alice
Console.WriteLine(person.Age); // 输出:30
```
在以上示例中,通过 JsonSerializer.Serialize 方法将对象序列化为 JSON 字符串,通过 JsonSerializer.Deserialize 方法将 JSON 字符串反序列化为对象。
需要注意的是,System.Text.Json 默认情况下不支持将属性名的驼峰命名方式转换为下划线命名方式。如果需要支持该功能,可以在序列化和反序列化时设置 JsonSerializerOptions.PropertyNamingPolicy 属性,例如:
```
JsonSerializerOptions options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};
string json = JsonSerializer.Serialize(person, options);
Person person = JsonSerializer.Deserialize<Person>(json, options);
```
以上示例中,将 JsonSerializerOptions.PropertyNamingPolicy 属性设置为 JsonNamingPolicy.CamelCase,表示属性名使用驼峰命名方式。如果需要使用下划线命名方式,可以将该属性设置为 JsonNamingPolicy.SnakeCase。