简体   繁体   中英

Deserialize Json Response with nested objects

I'm expecting this response from the API:

{
   "EnterKey":"9876546789039876543567890",
   "Id":1441462,
   "Category":null,
   "job":{
      "Id":1020332,
      "SortName":"test"
   },
   "Initiator":null,
   "Source":{
      "Id":1,
      "Description":"data"
   },
   "BalanceNow":0.0,
   "ready":false,
   "Others":[
      {
         "Id":1255080,
         "Amount":100.0,
         "JobMethod":{
            "Id":24,
            "Description":"task",
            "JobType":{
               "Id":1,
               "Description":"Other"
            }
         },
         "Notes":null
      }
   ],
   "Messages":null,
   "Products":[
      {
         "Tasks":{
            "Id":2,
            "Description":"Blah..."
         },
         "Join":null,
         "TargetData":{
            "PaymentId":1535026,
            "WantedNotes":"Looks good",
            "Name":"John"
         },
         "AdminDefinedFee":null,
         "Product":"New"
      }
   ]
}

I want to deserialize the above Json Response to get the WantedNotes from TargetData that is inside Products . I wanted it done with Json.NET so i tried doing:

public class datasummary
{

   public List<TargetData> Products { get; set; }

}
public class TargetData
{

  public string WantedNotes { get; set; }

}

 var myresult = JsonConvert.DeserializeObject<datasummary>(jsonresponse);

That don't work. I don't know how that really is done. Can someone please show it's done correct?

Define the class structure like this:

public class Job
{
    public int Id { get; set; }
    public string SortName { get; set; }
}

public class Source
{
    public int Id { get; set; }
    public string Description { get; set; }
}

public class JobType
{
    public int Id { get; set; }
    public string Description { get; set; }
}

public class JobMethod
{
    public int Id { get; set; }
    public string Description { get; set; }
    public JobType JobType { get; set; }
}

public class Others
{
    public int Id { get; set; }
    public double Amount { get; set; }
    public JobMethod JobMethod { get; set; }
    public object Notes { get; set; }
}

public class Tasks
{
    public int Id { get; set; }
    public string Description { get; set; }
}

public class TargetData
{
    public int PaymentId { get; set; }
    public string WantedNotes { get; set; }
    public string Name { get; set; }
}

public class Product
{
    public Tasks Tasks { get; set; }
    public object Join { get; set; }
    public TargetData TargetData { get; set; }
    public object AdminDefinedFee { get; set; }
    public string Product { get; set; }
}

public class DataDummary
{
    public string EnterKey { get; set; }
    public int Id { get; set; }
    public object Category { get; set; }
    public Job job { get; set; }
    public object Initiator { get; set; }
    public Source Source { get; set; }
    public double BalanceNow { get; set; }
    public bool ready { get; set; }
    public List<Others> Others { get; set; }
    public object Messages { get; set; }
    public List<Product> Products { get; set; }
}

Then use:

var myresult = JsonConvert.DeserializeObject < DataSummary > (jsonresponse);

When working with json, you can copy all text from the file, add an new class then go to Edit > Paste Especial > Paste JSON as Classes . It will do all the work for you Then you can use

var myresult = JsonConvert.DeserializeObject <DataSummary> (jsonresponse);

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