我正在尝试创建一个C#viewmodel来映射以下JSON:
"choices": {
"5": {
"Id": 16,
"Name": "Sterk",
"FoodPropertyId": 5
},
"6": {
"Id": 17,
"Name": "Pommes Frites",
"FoodPropertyId": 6
}
},
你可能会注意到......" 5"和" 6"只是值,在我的viewmodel中根本没有价值。问题是..里面的数组数据是我需要的。
有人可以告诉我如何将其映射到视图模型中吗?
答案 0 :(得分:2)
您可以使用choices
的字典。键将是数字类型,值将是表示具有这3个属性的每个项目的类。
public class RootData
{
public Dictionary<int, FoodItem> Choices { set; get; }
}
public class FoodItem
{
public int Id { get; set; }
public int FoodPropertyId { get; set; }
public string Name { get; set; }
}
这适用于以下JSON
{
"choices": {
"5": {
"Id": 16,
"Name": "Sterk",
"FoodPropertyId": 5
},
"6": {
"Id": 17,
"Name": "Pommes Frites",
"FoodPropertyId": 6
}
}
}
编辑:根据评论,添加代码以访问此内容。
您可以遍历Choices
字典并读取每个键和值(FoodItem
对象)
以下是使用RootData
类作为wep api 2控制器操作方法参数的示例。
public IHttpActionResult Post(RootData value)
{
if (value != null && value.Choices != null)
{
foreach (var valueChoice in value.Choices)
{
int theNumber = valueChoice.Key;
FoodItem foodItem = valueChoice.Value;
var name = foodItem.Name;
var id = foodItem.Id;
}
}
return Ok("All good");
}