C# Newtonsoft.Json序列化
时间: 2024-12-13 11:13:22 浏览: 8
C#中的Newtonsoft.Json库是一个非常流行的用于序列化和反序列化JSON数据的工具。序列化和反序列化是将对象转换为JSON字符串或将JSON字符串转换为对象的过程。Newtonsoft.Json提供了强大的功能和灵活性,使其成为处理JSON数据的首选库之一。
以下是一些基本用法:
1. **安装Newtonsoft.Json库**:
首先,你需要在项目中安装Newtonsoft.Json库。可以通过NuGet包管理器安装:
```
Install-Package Newtonsoft.Json
```
2. **序列化对象为JSON字符串**:
```csharp
using Newtonsoft.Json;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
// 创建对象
Person person = new Person { Name = "John Doe", Age = 30 };
// 序列化为JSON字符串
string json = JsonConvert.SerializeObject(person);
Console.WriteLine(json);
```
3. **反序列化JSON字符串为对象**:
```csharp
using Newtonsoft.Json;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
// JSON字符串
string json = "{\"Name\":\"John Doe\",\"Age\":30}";
// 反序列化为对象
Person person = JsonConvert.DeserializeObject<Person>(json);
Console.WriteLine(person.Name);
Console.WriteLine(person.Age);
```
4. **自定义序列化和反序列化**:
你可以通过属性注解来自定义序列化和反序列化过程。例如,使用`[JsonProperty]`属性来指定JSON属性名:
```csharp
using Newtonsoft.Json;
public class Person
{
[JsonProperty("full_name")]
public string Name { get; set; }
[JsonProperty("years_old")]
public int Age { get; set; }
}
// 序列化为JSON字符串
Person person = new Person { Name = "John Doe", Age = 30 };
string json = JsonConvert.SerializeObject(person);
Console.WriteLine(json); // 输出: {"full_name":"John Doe","years_old":30}
```
5. **处理复杂类型**:
Newtonsoft.Json可以处理复杂类型,包括嵌套对象、集合等。例如:
```csharp
using Newtonsoft.Json;
using System.Collections.Generic;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public List<string> Hobbies { get; set; }
}
// 创建对象
Person person = new Person
{
Name = "John Doe",
Age = 30,
Hobbies = new List<string> { "Reading", "Swimming", "Coding" }
};
// 序列化为JSON字符串
string json = JsonConvert.SerializeObject(person, Formatting.Indented);
Console.WriteLine(json);
```
阅读全文