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");
}