我需要创建一个字典数组,其中该数组的大小可以动态变化。
在此示例中,我创建了一个包含 10 个元素的数组,并且只填充了 2 个元素。但是我需要根据代码使数组变大或变小。
Dictionary<string, object>[] valor = new Dictionary<string, object>[10];
要填充它:
valor[0].Add("llave1","01");
valor[0].Add("llave2","02");
valor[1].Add("llave1","11");
valor[1].Add("llave2","12");
如果我们要对 JSON 做等价,结构可能是这样的:
{
"informe":[{ "grupo1" : [{
"llave1": "01",
"llave2": "02"
},
{
"llave1": "11",
"llave2": "12"
}]
},
{ "grupo2" : [{
"llave1": "54",
"llave2": "62"
},
{
"llave1": "35",
"llave2": "23"
}]
}]
}
重要提示:我需要动态声明元素。
如果我们使用
http://json2csharp.com/
您将能够获得 c# 结构
json
,这不需要任何Dictionary<>
但也许
Grupo1
andGrupo2
可以简单地定义为Grupo
这个想法是使用图书馆
牛顿软件.Json
使用反序列化该json到类
请记住,json 具有您必须尊重的结构,您不能应用诸如键之类的属性,就好像它们是字典的键一样,这是行不通的
如果要序列化字典
序列化到字典
你可以让一个包含另一个,就像是
如果你想添加一些额外的东西,你会使用
您可以使用列表、字典和包装类。
首先将执行包装器的类:
这是一个非常简单的类,它只有一个属性 is
informe
和一个初始化该属性的构造函数。现在我介绍如何填写或使用课程
CustomWrap
:变量的输出或值
json
是:为每个组创建一个字典,其值将是一个列表。还请注意,在类中,
CustomWrap
您可以创建添加组和键的方法,始终验证添加到字典中的键,以便它们不会重复并引发异常。我留下的代码并不意味着它是最优雅的解决方案,因为在列表中查看字典和在字典中查看列表变得有点乏味和混乱。为了更清楚一点(正如我在上一段中所说的那样),请创建自己的添加、删除和编辑方法。下面我留下列表和字典文档链接,您可以在其中找到有关如何添加和删除的更多信息。
可以确定的其他一点是,为每个组创建了一个字典,该字典将只包含一个带有其值的键,这对我来说是在浪费字典的使用,尽管对于示例来说它工作得很好。我建议您,如果您可以将 json 结构更改为更简单的结构,它将使您的工作更轻松。
在我
JsonConvert.SerializeObject
用来获取 json 的示例中,这个库可以从 NuGet 包管理器下载。下面我留下图书馆的链接。我突然想到你创建了一个方法来执行增加或减少,我给你一个例子。
这可能不是最优雅的方式,但这是我当时想到的。
否则使用