我的网址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);
但它会引发异常。
无法将当前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进行反序列化应该怎么做?
答案 0 :(得分:6)
您的json
是一个带有数组的对象,如下所示:
public class ObjectData
{
public List<AllCategories> data{get;set;}
}
因此,您必须将Json
转换为对象:
var result = JsonConvert.DeserializeObject<ObjectData>(content);
答案 1 :(得分:5)
你需要这样的东西
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);
反序列化