JSON.NET数组转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON.NET数组转换相关的知识,希望对你有一定的参考价值。

我正在尝试将JSON数组转换为C#字典。 My 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));
答案

好吧,你的词典是嵌套属性。甚至更多 - 它不是真正的字典。它是一个对象数组,其中每个对象由两个字段组成 - 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"}
]

以上是关于JSON.NET数组转换的主要内容,如果未能解决你的问题,请参考以下文章

使用 Json.NET (Newtonsoft) 将空数组从 JSON 转换为 XML

JSON.NET数组转换

JSON.Net无法在自定义JsonConverter中反序列化json数组

将 json 转换为 C# 数组?

一:Newtonsoft.Json 支持序列化与反序列化的.net 对象类型;

打字稿->从Json.net转换字典的内容