JSON.NET 数组转换



我正在尝试将JSON数组转换为C#字典。我的盒子类具有"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));

问题是你的字典在嵌套属性中。甚至更多 - 它不是真正的字典。它是一个对象数组,其中每个对象由两个字段组成 - 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);
JSON 不需要 {}

在顶层 - 所以你可以把 {} 中的项目列表用 [] 括起来。

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

相关内容

  • 没有找到相关文章

最新更新