📜  解析 json C# (1)

📅  最后修改于: 2023-12-03 15:27:56.227000             🧑  作者: Mango

解析 JSON 数据使用 C#

JSON 是一种常见的轻量级数据交换格式,它被广泛应用于 Web 开发、数据传输等领域。在 C# 编程中,我们通常使用 Newtonsoft.Json 库来处理 JSON 数据。

本文将介绍如何使用 C# 解析 JSON 数据,包括序列化和反序列化操作。

序列化

序列化是将 C# 对象转化为 JSON 数据的过程。可以使用 Newtonsoft.Json 库中的 JsonConvert 类实现序列化操作。

using Newtonsoft.Json;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void Serialize()
{
    var person = new Person { Name = "John", Age = 27 };
    string json = JsonConvert.SerializeObject(person);
    Console.WriteLine(json);
}

上述代码中,我们定义了一个 Person 类,并创建了一个 Person 对象。接着,我们使用 JsonConvert.SerializeObject 方法将 Person 对象序列化为 JSON 字符串。

输出结果为:

{
  "Name": "John",
  "Age": 27
}

值得注意的是,我们需要在 Person 类的属性上使用 get 和 set 访问器,以便 JsonConvert 类能够正确读取和写入属性值。

反序列化

反序列化是将 JSON 数据转化为 C# 对象的过程。我们同样可以使用 JsonConvert 类实现反序列化操作。

public static void Deserialize()
{
    string json = @"{
        'Name': 'John',
        'Age': 27
    }";

    Person person = JsonConvert.DeserializeObject<Person>(json);

    Console.WriteLine(person.Name);
    Console.WriteLine(person.Age);
}

上述代码中,我们定义了一个 JSON 字符串,然后使用 JsonConvert.DeserializeObject 方法将其反序列化为 Person 对象。

输出结果为:

John
27

在实际应用场景中,JSON 数据往往会嵌套包含多个对象或数组。我们可以使用 JObject、JArray 等类型来处理复杂的 JSON 数据。

public static void DeserializeComplexJson()
{
    string json = @"{
        'Name': 'John',
        'Age': 27,
        'Address': {
            'Street': '123 Main St.',
            'City': 'New York'
        },
        'PhoneNumbers': [
            {
                'Type': 'Home',
                'Number': '555-1234'
            },
            {
                'Type': 'Work',
                'Number': '555-5678'
            }
        ]
    }";

    JObject obj = JObject.Parse(json);

    string name = (string)obj["Name"];
    int age = (int)obj["Age"];
    string street = (string)obj["Address"]["Street"];
    string city = (string)obj["Address"]["City"];

    JArray phones = (JArray)obj["PhoneNumbers"];
    foreach (JObject phone in phones)
    {
        string type = (string)phone["Type"];
        string number = (string)phone["Number"];
        Console.WriteLine("{0}: {1}", type, number);
    }
}

上述代码中,我们定义了一个包含嵌套对象和数组的 JSON 字符串,并使用 JObject.Parse 方法将其解析为一个 JObject 对象。接着,我们使用 [] 操作符来获取对象属性的值,以及遍历数组中的对象。

输出结果为:

Home: 555-1234
Work: 555-5678
总结

本文介绍了如何在 C# 中使用 Newtonsoft.Json 库来处理 JSON 数据,包括序列化和反序列化操作。通过掌握本文所述的技术,您可以方便地在 C# 编程中处理常见的 JSON 数据,完成各种业务需求。