📅  最后修改于: 2023-12-03 14:39:43.397000             🧑  作者: Mango
在 C# 中,可以使用 Newtonsoft.Json(也称为 JSON.NET)这个流行的第三方库来处理 JSON(JavaScript Object Notation)数据。其中之一的功能就是可以将 JSON 数据转换为 C# 中的对象,并且也可以将 C# 对象序列化为 JSON 格式。而本文的主题就是介绍如何在 C# 中通过 Newtonsoft.Json 序列化和反序列化包含属性的 JSON 数据。
所谓的包含属性的 JSON 数据,指的是在 JSON 数据中包含了一个或多个嵌套的 JSON 对象,而该 JSON 对象包含了一些属性和对应的值。
以下是一个例子:
{
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "New York",
"state": "NY",
"zip": "10001"
}
}
在这个例子中,address
是一个嵌套的 JSON 对象,它包含了四个属性和对应的值。
在 C# 中,可以使用 JsonConvert
类的 DeserializeObject
方法将包含属性的 JSON 数据转换为 C# 中的对象。
此外,现在主流的做法是定义一个与 JSON 数据相对应的 C# 类,使用 Newtonsoft.Json 序列化/反序列化接口将 JSON 数据转换为该类的实例,然后操作 C# 实例对象。
以上面的例子为例,可以先定义一个对应的 C# 类:
public class Address
{
public string Street { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Address Address { get; set; }
}
然后使用 JsonConvert.DeserializeObject
方法将 JSON 数据转换为 C# 对象:
string json = "{\"name\":\"John\",\"age\":30,\"address\":{\"street\":\"123 Main St\",\"city\":\"New York\",\"state\":\"NY\",\"zip\":\"10001\"}}";
Person person = JsonConvert.DeserializeObject<Person>(json);
此时,person
对象的属性值就会被赋为 JSON 数据中的对应值。
将包含属性的 C# 对象序列化为 JSON 数据同样很简单,只需要使用 JsonConvert.SerializeObject
方法即可。
Person person = new Person
{
Name = "John",
Age = 30,
Address = new Address
{
Street = "123 Main St",
City = "New York",
State = "NY",
Zip = "10001"
}
};
string json = JsonConvert.SerializeObject(person);
以上代码将 person
对象序列化为 JSON 数据的格式为:
{
"Name": "John",
"Age": 30,
"Address": {
"Street": "123 Main St",
"City": "New York",
"State": "NY",
"Zip": "10001"
}
}
在 C# 中使用 Newtonsoft.Json 序列化和反序列化包含属性的 JSON 数据很容易,只需要定义一个与 JSON 数据相对应的 C# 类,然后使用 JsonConvert
类的方法即可。此外,为了方便将 C# 对象序列化为 JSON 数据,建议在 C# 类中使用 PascalCase 命名规范来定义属性名。