关键是构建Key
字符串,就好像它是一个命名空间一样。使用递归执行此操作是我当前的实现,但我确信还有更多的堆栈友好选项(LINQ?迭代?)我还没有找到。几乎每个示例都过于简单,并且没有考虑基于密钥层次结构“命名空间”它们的能力。
这是我的字典布局的一个简单示例。希望这很容易理解 - 我想彻底。
我转换类似于此的 JSON(嵌套,以通过网络保存数据):
"entity": {
"foo": {
"bar": {
"baz": {
"2": "description",
"1": "title"
}
}
进入一个Dictionary<string,object>
. 当Value is string
,那是“命名空间”的结尾。对该对象进行详细而令人困惑的观察:
[0] {[entity, Dictionary[String,Object]]} KeyValuePair<string,object>
Key "entity" string
Value Count = 1 object {Dictionary<string,object>}
[0] {[foo, Dictionary[String,Object]]} KeyValuePair<string,object>
Key "foo" string
Value Count = 12 object {Dictionary<string,object>}
[0] {[bar, Dictionary[String,Object]]} KeyValuePair<string,object>
Key "bar" string
Value Count = 1 object {Dictionary<string,object>}
[0] {[baz, Dictionary[String,Object]]} KeyValuePair<string,object>
Key "baz" string
Value Count = 3 object {Dictionary<string,object>}
[0] {[3, title]} KeyValuePair<string,object>
Key "3" string
Value "title" object {string}
这KeyValuePair
最终会是:"entity.foo.bar.baz.title.3", "3"