在动态 c# 数组中使用 json 转换 Web 响应结果

本文关键字:转换 json Web 响应 结果 动态 数组 | 更新日期: 2023-09-27 18:34:57

我得到以下 Json 格式的网络响应(示例(

{  
   "result":{  
      "Student1":{  
         "Age":"15",
         "School":"ABC"
      },
      "Student2":{  
         "Age":13,
         "School":"XYZ"
      },
      "Student3":{  
         "Age":14,
         "School":"123"
      }
   }
}

我得到的学生 1、学生 2 等的结果是动态的。这意味着当我向学生发送请求时,我将只得到这些学生的响应结果。

我想以动态的方式捕捉这个结果。
我想创建一个包含key学生和年龄value的数组,以便所有学生都可以存储为keys,年龄存储为values对。
然后,我想根据键值对将这些值分配给应用程序中的其他变量。例如,只要存在 student1,年龄值都应分配给该变量。

在动态 c# 数组中使用 json 转换 Web 响应结果

您可以使用

出色的 Json.Net 库来反序列化您的 JSON。

首先,您需要创建一些这样的类来保存数据。 这里需要RootObject类中的字典,因为学生密钥是动态的。 类中的属性名称(ResultAgeSchool(与JSON中相应的属性名称匹配。

class RootObject
{
    public Dictionary<string, Student> Result { get; set; }
}
class Student
{
    public int Age { get; set; }
    public string School { get; set; }
}

然后,您可以像这样反序列化 JSON(其中json是您的 JSON 字符串(:

RootObject root = JsonConvert.DeserializeObject<RootObject>(json);

并访问如下所示的值:

foreach (KeyValuePair<string, Student> kvp in root.Result)
{
    Console.WriteLine(kvp.Key);
    Console.WriteLine("Age: " + kvp.Value.Age);
    Console.WriteLine("School: " + kvp.Value.School);
    Console.WriteLine();
}

完整演示在这里: https://dotnetfiddle.net/joEimE