📜  如何在 c# 中从 json 获取属性(1)

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

如何在 C# 中从 JSON 获取属性

简介

在现代Web应用程序中,使用JSON作为应用程序数据的格式是很常见的。在C#中,想要从JSON中获取属性,需要使用Json.NET这个第三方库。

在本篇文章中,我们将介绍如何在C#中使用Json.NET来从JSON中获取属性。

步骤
步骤1:安装Json.NET库

Json.NET是一个开源的.NET序列化和反序列化库。它支持LINQ查询,处理JSON以及其他.NET相关功能。要使用Json.NET,请先安装它。可以通过NuGet包管理器在Visual Studio中安装Json.NET,或者通过Json.NET网站下载最新版本的二进制文件。

步骤2:定义JSON类

在C#中,我们需要定义一个类来反序列化JSON数据。在这个类中,我们需要声明JSON数据中需要读取的属性。

例如,我们有以下JSON数据:

{
    "name": "John Doe",
    "age": 30,
    "address": {
        "street": "123 Main St",
        "city": "Anytown",
        "state": "USA"
    },
    "phoneNumbers": [
        {
            "type": "home",
            "number": "555-555-1234"
        },
        {
            "type": "work",
            "number": "555-555-5678"
        }
    ]
}

我们可以定义如下C#类来反序列化这个JSON字符串:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public Address Address { get; set; }
    public List<PhoneNumber> PhoneNumbers { get; set; }
}

public class Address
{
    public string Street { get; set; }
    public string City { get; set; }
    public string State { get; set; }
}

public class PhoneNumber
{
    public string Type { get; set; }
    public string Number { get; set; }
}
步骤3:将JSON反序列化为类对象

有了要反序列化的JSON字符串和定义JSON类的C#类,我们现在可以使用Json.NET将JSON字符串反序列化为C#对象:

string json = @"{
    'Name': 'John Doe',
    'Age': 30,
    'Address': {
        'Street': '123 Main St',
        'City': 'Anytown',
        'State': 'USA'
    },
    'PhoneNumbers': [
        {
            'Type': 'home',
            'Number': '555-555-1234'
        },
        {
            'Type': 'work',
            'Number': '555-555-5678'
        }
    ]
}";

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

在这个示例中,我们使用JsonConvert.DeserializeObject<T>()方法将JSON字符串反序列化为Person类的对象。

步骤4:获取JSON属性的值

现在,我们可以访问C#对象中的属性,该属性的值是从JSON中获取的。

例如,要获取年龄,可以使用以下代码:

int age = person.Age; // 30

要获取电话号码列表中的第一个电话号码的类型,可以使用以下代码:

string phoneNumberType = person.PhoneNumbers[0].Type; // "home"
结论

使用Json.NET,可以轻松地将JSON数据反序列化为C#对象。在从JSON获取属性时,只需使用访问类属性的常规C#语法即可。