問題的關鍵在於如何將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"
你能提供代碼嗎?以上難以閱讀 – 2013-03-27 15:50:47
爲什麼不把「entity.foo.bar.baz.title」作爲密鑰存儲在一本字典中?如果這是不可能的,你可以提供一個查詢例子,你將如何查詢你的層次結構。 – duedl0r 2013-03-27 15:53:22
@ duedl0r它是嵌套的,因爲密鑰庫非常大,並且以JSON的形式發送。嵌套大大減少了要傳輸的數據量。 – erodewald 2013-03-27 15:55:10