我正在努力反序列化JSON数据,这些数据由一组内部具有相同结构的类似对象组成,但每个对象具有我无法预测的不同名称。
JSON的整体结构如下(source here):
名为1be2f7和193ff5的对象具有相同的结构。
如果我对这两个对象的名称进行硬编码,反序列化没有问题,但是如何在没有硬编码的情况下这样做?
以下是我尝试的内容:
public List<Rig> rigs { get; set; }
但是这给出了这个错误:
无法反序列化当前的JSON对象(例如{&#34; name&#34;:&#34; value&#34;}) 进入类型&#39; System.Collections.Generic.List`1 [Eth.Rig]&#39;因为 type需要一个JSON数组(例如[1,2,3])才能正确反序列化。至 修复此错误要么将JSON更改为JSON数组(例如[1,2,3]) 或更改反序列化类型,使其成为正常的.NET类型(例如 不是像整数这样的原始类型,不是像数组那样的集合类型 或者List)可以从JSON对象反序列化。 JsonObjectAttribute也可以添加到类型中以强制它 从JSON对象反序列化。路径&#39; rigs.1be2f7&#39;,第1行,位置 18。
有similar question here但其接受的答案对我不起作用,因为Visual Studio也只是硬编码对象的名称。
答案 0 :(得分:0)
发现它 - 结果非常简单。
改变这个:
public List<Rig> rigs { get; set; }
对此:
public Dictionary<Rig> rigs { get; set; }
然后使用它循环:
foreach(KeyValuePair<string, Rig> entry in rigs)
{
// do something with entry.Value or entry.Key
}