簡體   English   中英

使用嵌套對象反序列化 Json 響應

[英]Deserialize Json Response with nested objects

我期待來自 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"
      }
   ]
}

我想反序列化上面的 Json Response 以從Products內部的TargetData獲取WantedNotes 我想用 Json.NET 來完成,所以我嘗試這樣做:

public class datasummary
{

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

}
public class TargetData
{

  public string WantedNotes { get; set; }

}

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

那行不通。 我不知道這真的是怎么做到的。 有人可以證明它做得正確嗎?

像這樣定義類結構:

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; }
}

然后使用:

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

使用 json 時,您可以復制文件中的所有文本,添加一個新類,然后轉到Edit > Paste Especial > Paste JSON as Classes 它將為您完成所有工作然后您可以使用

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM