C#viewmodel:从JSON映射未命名的字符串数组

时间:2017-11-15 22:40:56

标签: c# json viewmodel

我正在尝试创建一个C#viewmodel来映射以下JSON:

"choices": {
        "5": {
            "Id": 16,
            "Name": "Sterk",
            "FoodPropertyId": 5
        },
        "6": {
            "Id": 17,
            "Name": "Pommes Frites",
            "FoodPropertyId": 6
        }
    },

你可能会注意到......" 5"和" 6"只是值,在我的viewmodel中根本没有价值。问题是..里面的数组数据是我需要的。

有人可以告诉我如何将其映射到视图模型中吗?

1 个答案:

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