C# 视图模型:从 JSON 映射未命名的字符串数组
C# viewmodel : Mapping unnamed string array from JSON
我正在尝试创建一个 C# 视图模型来映射以下 JSON:
"choices": {
"5": {
"Id": 16,
"Name": "Sterk",
"FoodPropertyId": 5
},
"6": {
"Id": 17,
"Name": "Pommes Frites",
"FoodPropertyId": 6
}
},
您可能会注意到..“5”和“6”只是值,在我的视图模型中根本没有价值。问题是..里面的数组数据是我需要的。
谁能告诉我如何将其映射到视图模型中?
您可以为 choices
使用字典。键将是数字类型,值将是 class,代表具有这 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
class 作为 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");
}
我正在尝试创建一个 C# 视图模型来映射以下 JSON:
"choices": {
"5": {
"Id": 16,
"Name": "Sterk",
"FoodPropertyId": 5
},
"6": {
"Id": 17,
"Name": "Pommes Frites",
"FoodPropertyId": 6
}
},
您可能会注意到..“5”和“6”只是值,在我的视图模型中根本没有价值。问题是..里面的数组数据是我需要的。
谁能告诉我如何将其映射到视图模型中?
您可以为 choices
使用字典。键将是数字类型,值将是 class,代表具有这 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
class 作为 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");
}