繁体   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