简体   繁体   中英

Unable to Parsing nested Json file in C#

I have Json format response from a API call and I want to map the data from the response to each varibales.

Json format

{
 "success": true,
  "data": {
    "students": [
      {
       "Admission_date": "2018-05-01",
       "Name": "Sree",
       "Branch": "Electronics",
       "Semester": "2",
       "HOD": "Mahesh",
      },
  {
      "Admission_date": "2018-05-01",
      "Name": "Naresh",
      "Branch": "Electronics",
      "Semester": "2",
      "HOD": "Mahesh",
      }
              ],
     "remaining": 0
    }
    }

I have tried to parse the JSON response and then to load the value through for each. But I'm not able to achieve the solution.

JObject jsonparsing1 = JObject.Parse(str4); //str4;- Json value
var token1 = (JArray)jsonparsing1.SelectToken("data");
var token2 = (JArray)jsonparsing1.SelectToken("data[0]Students");
JArray abc = JsonConvert.DeserializeObject<JArray>(token2.ToString());

foreach (var test in abc)
{
String Admission_date=test["Admission_date"];
String Name=test["Name"];
String Branch=test["Branch"];
String Semester=test["Semester"];
String HOD=test["HOD"];
String remaining=test["remaining"];
}

Expected result

String Admission_date=Admission_date
String Name=Name
String Branch=Branch
String Semester=Semester
String HOD=HOD
String remaining=remaining

Could anyone please help me on this?

I think you can use this sample:

public class JsonData
{
    public bool success { get; set; }
    public Data data { get; set; }
}
public class Data
{
    public Data()
    {
         this.students = new List<Student>();
    }

    public List<Student> students { get; set; }
    public int remaining { get; set; }
}
public class Student
{
    public string Admission_date { get; set; }
    public string Name { get; set; }
    public string Branch { get; set; }
    public string Semester { get; set; }
    public string HOD { get; set; }
}

And then:

JsonData abc = JsonConvert.DeserializeObject<JsonData>(token2.ToString());

I will do this way!

public class Student
{
    public string Admission_date { get; set; }
    public string Name { get; set; }
    public string Branch { get; set; }
    public string Semester { get; set; }
    public string HOD { get; set; }
}

public class Data
{
    public List<Student> students { get; set; }
    public int remaining { get; set; }
}

public class RootObject
{
    public bool success { get; set; }
    public Data data { get; set; }
}

and in C# Code Just use only below line:

var obj = JsonConvert.DeserializeObject<RootObject>("{ \"success\": true,\"data\": {\"students\": [{ \"Admission_date\": \"2018-05-01\",\"Name\": \"Sree\",\"Branch\":\"Electronics\",\"Semester\": \"2\",\"HOD\": \"Mahesh\",}],\"remaining\": 0}}");

use

foreach(var item in obj.data.students)
{
  // Access  Admission_date etc.
  string name = item.Name;
}

dotnetfiddle

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM