2012-07-06 45 views
2

我有一個響應JSON字符串的HTTP服務器。他們是這樣的:將自定義JSON解析爲ExtJS 4.1 TreeStore

 
{ 
    ... 
    "value":{ 
    "children":[ 
     { 
     "path":"KEY_518693", 
     "name":"KEY_518693", 
     "children_count_overall":0, 
     "children_page":1, 
     "children_pages":1, 
     "children_pagesize":10 
     ... 
     } 
    ], 
    "children_count_overall":1, 
    "children_page":1, 
    "children_pages":1, 
    "children_pagesize":1, 
    "name":null, 
    "path":null, 
    ... 
    } 
} 

每一個要求有父節點(在"value"),爲此,我要求孩子,這孩子(在"children"),也有一些尋呼信息。

如果沒有指定父節點,它會將根節點作爲虛擬根節點的子節點返回。

我代理的"root"屬性設置爲"value",所以代理知道哪裏來搜索節點,但我TreeStore的tree構件具有load()後,一個奇怪的結構:

tree: { 
    childNodes: [ 
    { 
     childNodes: [], <-- no child? 
     data: { 
     children: [ 
      { ...the raw data of the "children" node (like in the example above)...} 
     ], 
     ... the data of the "value" node and some data from the implicit node model... 
     } 
    } 
    ] 
} 

不知何故, "value"中的對象被轉換爲節點並插入到樹中,但它在"children"陣列中的對象將不會被轉換並最終成爲此"value"節點的數據。

回答

1

的TreeStore意味着消耗的那種JSON對象:

{ 
    "success": true, 
    "Root": [ 
      {...},{...},{...} //Children 
      ] 
} 

如果你還沒有指定根節點內的陣列,所有這些信息作爲原始數據通過。另外,如果您希望能夠訪問數據而無需查看「原始」信息,則最好指定一個模型,以指定哪些字段位於每個節點數據的內部。

所以基本上我會說,重做您的服務器響應或自己瀏覽原始數據會更好。