JSON.NET数组转换

时间:2019-01-27 12:54:43

标签: c# json json.net

我正在尝试将JSON数组转换为C#字典。 我的Box类具有“ id”和“ color”属性。

{
   "boxes" [
       {"id":0, "color":"red"},
       {"id":1, "color":"green"},
       {"id":2, "color":"blue"}
   ]
}

我已经尝试了一些方法,但是还没有运气使它能够工作。

List<Box> jsonResponse = JsonConvert.DeserializeObject<List<Box>>(File.ReadAllText(filePath));

2 个答案:

答案 0 :(得分:1)

好吧,您的词典位于嵌套属性中。 甚至更多-它实际上不是字典。它是一个对象数组,其中每个对象都包含两个字段-idcolor(而在字典中,我们有键值对)。

您可以将json反序列化为具有正确结构的匿名对象,然后从中取出盒子数组并将其转换为字典:

var box = new { id = 0, name = "" };
var jsonObj = new { boxes = new[] { box } };

var dict = JsonConvert.DeserializeAnonymousType(myJson, jsonObj).boxes
                                 .ToDictionary(b => b.id, b => b.name);

答案 1 :(得分:0)

JSON不需要最高级别的{}-因此,您只需将{}中的项目列表括在[]内即可。

[
    {"id":0, "color":"red"},
    {"id":1, "color":"green"},
    {"id":2, "color":"blue"}
]