📜  c# json 包含属性 - C# (1)

📅  最后修改于: 2023-12-03 14:39:43.397000             🧑  作者: Mango

C# JSON 包含属性

简介

在 C# 中,可以使用 Newtonsoft.Json(也称为 JSON.NET)这个流行的第三方库来处理 JSON(JavaScript Object Notation)数据。其中之一的功能就是可以将 JSON 数据转换为 C# 中的对象,并且也可以将 C# 对象序列化为 JSON 格式。而本文的主题就是介绍如何在 C# 中通过 Newtonsoft.Json 序列化和反序列化包含属性的 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# 中如何解析包含属性的 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 数据

将包含属性的 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 命名规范来定义属性名。