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

时间:2016-02-17 15:11:57

标签: c# arrays json

我以Json格式获得网络响应,其中包含以下(样本)

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

我为Student1,Student2等获得的结果是动态的。这意味着当我向学生发送请求时,我只会收到这些学生的回复结果。

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

1 个答案:

答案 0 :(得分:0)

您可以使用优秀的Json.Net library来反序列化您的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