【问题标题】:How to Deserialize JSON(multi level) in C#如何在 C# 中反序列化 JSON(多级)
【发布时间】:2015-07-28 07:31:19
【问题描述】:

我的 Web API 正在发送这个 JSON。

{   "data":[  
  {  
     "cat_id":"1",
     "category":"Clothing",
     "img_url":"sampleUrl.com"
  },
  {  
     "cat_id":"2",
     "category":"Electronic Shop",
     "img_url":"sampleUrl.com"
  },
  {  
     "cat_id":"3",
     "category":"Grocery",
     "img_url":"sampleUrl.com"
  },
  {  
     "cat_id":"4",
     "category":"Hardware",
     "img_url":"sampleUrl.com"
  }

  ]}

我尝试使用下面的 c# 代码反序列化这个 JSON

var result = JsonConvert.DeserializeObject<List<AllCategories>>(content);

但它会引发异常。

无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Collections.Generic.List`1[EzyCity.AllCategories]' 因为该类型需要 JSON 数组(例如 [1 ,2,3]) 以正确反序列化。

AllCategories 类

 public class AllCategories
{
    private string cat_id;
    private string category;
    private string img_url;

    public string Cat_Id
    {
        get { return cat_id; }
        set { cat_id = value; }
    }

    public string Category
    {
        get { return category; }
        set { category = value; }
    }

    public string Image_Url
    {
        get { return img_url; }
        set { img_url = value; }
    }
}

应该如何反序列化这种类型的 JSON?

【问题讨论】:

标签: c# json deserialization


【解决方案1】:

您的json 是一个具有如下数组的对象:

public class ObjectData
{
   public List<AllCategories> data{get;set;}
}

因此,您必须将Json 反序列化为对象:

var result = JsonConvert.DeserializeObject<ObjectData>(content);

【讨论】:

    【解决方案2】:

    你需要这样的东西

    public class Datum
    {
        public string cat_id { get; set; }
        public string category { get; set; }
        public string img_url { get; set; }
    }
    
    public class RootObject
    {
        public List<Datum> data { get; set; }
    }
    

    然后使用

    var result = JsonConvert.DeserializeObject<RootObject>(content);
    

    反序列化

    【讨论】:

    • 赞成(不仅)因为您使用了正确的“数据”单数化:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多