在C#中可以使用Newtonsoft.Json库来遍历复杂的JSON对象。下面是一个示例代码:
using Newtonsoft.Json.Linq;
using System;
class Program
{
static void Main()
{
// JSON字符串
string json = @"{
'name': 'John',
'age': 30,
'address': {
'street': '123 Street',
'city': 'New York',
'state': 'NY'
},
'friends': [
{ 'name': 'Alice', 'age': 28 },
{ 'name': 'Bob', 'age': 32 }
]
}";
// 解析JSON字符串为JObject对象
JObject obj = JObject.Parse(json);
// 遍历顶层属性
foreach (var property in obj.Properties())
{
Console.WriteLine(property.Name + ": " + property.Value);
}
// 获取嵌套属性值
string name = (string)obj["name"];
int age = (int)obj["age"];
string street = (string)obj["address"]["street"];
string city = (string)obj["address"]["city"];
string state = (string)obj["address"]["state"];
Console.WriteLine("Name: " + name);
Console.WriteLine("Age: " + age);
Console.WriteLine("Street: " + street);
Console.WriteLine("City: " + city);
Console.WriteLine("State: " + state);
// 遍历数组
JArray friends = (JArray)obj["friends"];
foreach (JObject friend in friends)
{
string friendName = (string)friend["name"];
int friendAge = (int)friend["age"];
Console.WriteLine("Friend: " + friendName + ", Age: " + friendAge);
}
}
}
这个示例代码首先使用JObject.Parse方法将JSON字符串解析为JObject对象。然后使用foreach循环遍历顶层属性,并输出它们的名称和值。
接下来使用索引器来获取嵌套属性的值,例如obj["name"]获取"name"属性的值。需要注意的是,获取的属性值可能需要进行类型转换,如将字符串转换为int。
最后,使用foreach循环遍历数组,使用JArray对象的索引器来获取数组元素的属性值。
请注意,上述示例代码中的JSON字符串使用了单引号,因为在C#中单引号是用于字符字面量的。如果您的JSON字符串中使用的是双引号,请确保在C#代码中使用双引号。
下一篇:遍历复杂的JSON数组