如何在 C# 中反序列化 JSON(多级)
How to Deserialize JSON(multi level) in C#
我的网站 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);
但它抛出异常。
Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[EzyCity.AllCategories]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
所有类别class
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?
您的 json
是一个具有数组的对象,如下所示:
public class ObjectData
{
public List<AllCategories> data{get;set;}
}
因此您必须将 Json
反序列化为对象:
var result = JsonConvert.DeserializeObject<ObjectData>(content);
你需要这样的东西
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);
反序列化
我的网站 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# 代码
反序列化此 JSONvar result = JsonConvert.DeserializeObject<List<AllCategories>>(content);
但它抛出异常。
Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[EzyCity.AllCategories]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
所有类别class
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?
您的 json
是一个具有数组的对象,如下所示:
public class ObjectData
{
public List<AllCategories> data{get;set;}
}
因此您必须将 Json
反序列化为对象:
var result = JsonConvert.DeserializeObject<ObjectData>(content);
你需要这样的东西
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);
反序列化