0

我希望能够拥有一个 Dictionary< string、Dictionary< string、Dictionary< string、...>>>。我不想拥有 Dictionary< string,object> 因为我必须将对象转换回其中的任何内容,这使得嵌套字典的遍历变得困难。

我希望能够从一些序列化数据源(如 JSON、YAML、XML)加载字典,然后能够遍历

dict["toplevel"]["nextlevel"]["and then some"]

背景故事

我一直在将 VBJSON 移植到 .Net。我有(有)Dictionary<Object,Object>,我在其中嵌入了其他 Dictionary<Object,Object> 和 List<Object>。让我很恼火的是,如果没有大量演员表,我就无法轻松地遍历生成的结构。

> thing["collection"]
Count = 4
    [0]: {[0, dog]}
    [1]: {[1, cat]}
    [2]: {[2, 2]}
    [3]: {[3, 3]}
> thing["collection"][0]
Cannot apply indexing with [] to an expression of type 'object'
> (thing["collection"])[0]
Cannot apply indexing with [] to an expression of type 'object'
> ((Dictionary<object,object>)thing["collection"])[0]
"dog"
4

2 回答 2

3

您必须明确定义类型(也就是创建自己的类):

 Public Class RecursiveDict 
      Inherits Dictionary(of String, RecursiveDict)
 End Class

或者在c#中

 class RecursiveDict : Dictionary<string, RecursiveDict> { }

一旦声明了类型,就可以使用它。

于 2014-04-09T02:18:25.337 回答
1

Tree结构似乎是您正在寻找的那种嵌套的最佳选择。

您可以轻松地将Tree结构序列化/反序列化到/从文件。

public struct TreeNode
{
    public KeyValuePair<string, object> Data;
    public TreeNode Parent;
}
于 2014-04-09T02:14:54.750 回答