📅  最后修改于: 2023-12-03 15:38:13.521000             🧑  作者: Mango
在现代Web应用程序中,使用JSON作为应用程序数据的格式是很常见的。在C#中,想要从JSON中获取属性,需要使用Json.NET这个第三方库。
在本篇文章中,我们将介绍如何在C#中使用Json.NET来从JSON中获取属性。
Json.NET是一个开源的.NET序列化和反序列化库。它支持LINQ查询,处理JSON以及其他.NET相关功能。要使用Json.NET,请先安装它。可以通过NuGet包管理器在Visual Studio中安装Json.NET,或者通过Json.NET网站下载最新版本的二进制文件。
在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; }
}
有了要反序列化的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
类的对象。
现在,我们可以访问C#对象中的属性,该属性的值是从JSON中获取的。
例如,要获取年龄,可以使用以下代码:
int age = person.Age; // 30
要获取电话号码列表中的第一个电话号码的类型,可以使用以下代码:
string phoneNumberType = person.PhoneNumbers[0].Type; // "home"
使用Json.NET,可以轻松地将JSON数据反序列化为C#对象。在从JSON获取属性时,只需使用访问类属性的常规C#语法即可。