我有以下json:
{
"cuisines": [
{
"cuisine": {
"cuisine_id": 152,
"cuisine_name": "African"
}
},
{
"cuisine": {
"cuisine_id": 1,
"cuisine_name": "American"
}
},
{
"cuisine": {
"cuisine_id": 4,
"cuisine_name": "Arabian"
}
},
{
"cuisine": {
"cuisine_id": 151,
"cuisine_name": "Argentine"
}
}
]
}
我使用RestSharp获取数据并将其发送到JSON.Net:
JsonConvert.DeserializeObject<Cuisines>(content)
我正在使用以下课程:
public class Cuisine
{
[JsonProperty("cuisine_id")]
public string cuisine_id { get; set; }
[JsonProperty("cuisine_name")]
public string cuisine_name { get; set; }
}
public class Cuisines
{
[JsonProperty("cuisines")]
public List<Cuisine> AllCuisines { get; set; }
}
奇怪的是,返回数据是根据我的要求找到81个美食对象,但所有美食信息都是空的。
答案 0 :(得分:3)
你的模特还需要一个班级。所以它应该是
public class Cuisine
{
[JsonProperty("cuisine_id")]
public string cuisine_id { get; set; }
[JsonProperty("cuisine_name")]
public string cuisine_name { get; set; }
}
public class CuisineWrapper
{
public Cuisine cuisine { get; set; }
}
public class Cuisines
{
[JsonProperty("cuisines")]
public List<CuisineWrapper> AllCuisines { get; set; }
}
答案 1 :(得分:1)
您的类定义与提供的JSON不匹配。顶级数组包含具有单个属性(对象)cuisine
的对象,如下所示:
"cuisine": {
"cuisine_id": 152,
"cuisine_name": "African"
}
您的C#List<Cuisine>
包含直接展示cuisine_id
和cuisine_name
的对象。如果您无法更改JSON,请使用JsonObjectAttribute
class Cuisine
答案 2 :(得分:0)
实际上你有3个对象 - 一个根对象,它包含一个名为cuisines
的属性,它是Cuisine
的集合。
当您在视觉工作室中将JSON粘贴为类时,您将获得以下结构(您可能希望重命名某些内容并列出 - 如果是数组)
public class Rootobject
{
public Cuisine[] cuisines { get; set; }
}
public class Cuisine
{
public Cuisine1 cuisine { get; set; }
}
public class Cuisine1
{
public int cuisine_id { get; set; }
public string cuisine_name { get; set; }
}
答案 3 :(得分:-1)
您的JSON嵌套比您的类结构更多。如果您可以将JSON更改为以下格式:
"cuisines": [
{
"cuisine_id": 152,
"cuisine_name": "African"
},
{
"cuisine_id": 1,
"cuisine_name": "American"
},
.. etc
然后它将与您的班级结构相匹配。
或者,更改您的类结构以匹配JSON:
public class Cuisine
{
[JsonProperty("cuisine")]
public CuisineData data { get; set; }
}
public class CuisineData
{
[JsonProperty("cuisine_id")]
public string cuisine_id { get; set; }
[JsonProperty("cuisine_name")]
public string cuisine_name { get; set; }
}
public class Cuisines
{
[JsonProperty("cuisines")]
public List<Cuisine> AllCuisines { get; set; }
}