如何在c语言中的json对象内循环json对象

rak*_*shi 4 c# json

我有以下JSON数组

var jsondataset = "{'tablename':'Employee','data':[{ 'Employee Name':'John','Salary':5000,'Department':'Marketing'},{ 'Employee Name':'Smith','Salary':4000,'Department':'IT'},{ 'Employee Name':'Williams','Salary':6000,'Department':'Sales'},{'Employee Name':'Vijay','Salary':6500,'Department':'IT'}],'Student':'Employee','data':[{'StudentID':1,'Name':'Suresh','Marks':950,'Grade':'A+'},{'StudentID':1,'Name':'Rama','Marks':900,'Grade':'A+'},{'StudentID':1,'Name':'Kishore','Marks':750,'Grade':'B'}]}";
Run Code Online (Sandbox Code Playgroud)

我正在循环jsondataset如下

 JavaScriptSerializer json_serializer = new JavaScriptSerializer();
 var routes_list = (Dictionary<string, object>)json_serializer.DeserializeObject(jsondataset);
 string tname="";
 foreach (var record in routes_list)
 {
 }
Run Code Online (Sandbox Code Playgroud)

但我不明白如何循环键“数据”中的每个记录

请给我解决方案

L_J*_*L_J 5

考虑到JSON的结构,您可以按以下方式反序列化它:

        var jsondataset = "{'tablename':'Employee','data':[{ 'Employee Name':'John','Salary':5000,'Department':'Marketing'},{ 'Employee Name':'Smith','Salary':4000,'Department':'IT'},{ 'Employee Name':'Williams','Salary':6000,'Department':'Sales'},{'Employee Name':'Vijay','Salary':6500,'Department':'IT'}],'Student':'Employee','data':[{'StudentID':1,'Name':'Suresh','Marks':950,'Grade':'A+'},{'StudentID':1,'Name':'Rama','Marks':900,'Grade':'A+'},{'StudentID':1,'Name':'Kishore','Marks':750,'Grade':'B'}]}";

        JavaScriptSerializer json_serializer = new JavaScriptSerializer();
        var routes_list = (Dictionary<string, object>)json_serializer.DeserializeObject(jsondataset);

        foreach (var entry in routes_list)
        {
            if (entry.Key == "data")
            {
                var objArr = (object[])entry.Value;
                foreach (var obj in objArr)
                {
                    foreach (var item in (Dictionary<string, object>)obj)
                    {
                        Console.WriteLine(item.Key + ": " + item.Value);
                    }
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

输出: StudentID: 1 Name: Suresh Marks: 950 Grade: A+ StudentID: 1 Name: Rama Marks: 900 Grade: A+ StudentID: 1 Name: Kishore Marks: 750 Grade: B

  • 您抓住了我错过的东西,重复的钥匙!因此删除了我的答案并在这里投票 (2认同)