是的,C# 中的 JArray(通常与 Newtonsoft.Json 库一起使用)可以处理复杂的数据。它可以轻松地序列化和反序列化 JSON 数据,包括嵌套的对象和数组。这使得 JArray 成为处理来自 API、文件或其他数据源的复杂 JSON 数据的理想选择。
以下是一个简单的示例,说明如何使用 JArray 处理复杂数据:
using Newtonsoft.Json; using System; using System.Collections.Generic; class Program { static void Main() { string json = @"{ ""name"": ""John"", ""age"": 30, ""isStudent"": false, ""courses"": [ { ""name"": ""Math"", ""grade"": 90 }, { ""name"": ""English"", ""grade"": 85 } ], ""address"": { ""street"": ""123 Main St"", ""city"": ""New York"", ""state"": ""NY"", ""zipCode"": ""10001"" } }"; // Deserialize JSON to JObject JObject jsonObject = JsonConvert.DeserializeObject<JObject>(json); // Access complex data string name = jsonObject["name"].ToString(); int age = jsonObject["age"].ToObject<int>(); bool isStudent = jsonObject["isStudent"].ToObject<bool>(); List<JObject> courses = jsonObject["courses"].ToObject<List<JObject>>(); JObject address = jsonObject["address"].ToObject<JObject>(); Console.WriteLine($"Name: {name}"); Console.WriteLine($"Age: {age}"); Console.WriteLine($"Is Student: {isStudent}"); Console.WriteLine("Courses:"); foreach (var course in courses) { string courseName = course["name"].ToString(); int courseGrade = course["grade"].ToObject<int>(); Console.WriteLine($" {courseName}: {courseGrade}"); } Console.WriteLine($"Address:"); Console.WriteLine($" Street: {address["street"]}"); Console.WriteLine($" City: {address["city"]}"); Console.WriteLine($" State: {address["state"]}"); Console.WriteLine($" Zip Code: {address["zipCode"]}"); } } 在这个示例中,我们首先将 JSON 字符串反序列化为 JObject。然后,我们可以轻松地访问和处理嵌套的对象和数组。