Dojo是一個JavaScript工具包,提供了許多實用的功能。其中之一是將JSON轉換為一棵樹的功能。在Dojo中,使用dojo/data/ObjectStore和dojo/store/Memory組合,將JSON數據處理成樹狀結構。
下面是將JSON數據轉換為一棵樹的代碼片段:
require(["dojo/data/ObjectStore", "dojo/store/Memory"], function(ObjectStore, Memory){ var data = [ { id: 1, name: "中國", parentId: 0 }, { id: 2, name: "浙江省", parentId: 1 }, { id: 3, name: "杭州市", parentId: 2 }, { id: 4, name: "上城區", parentId: 3 }, { id: 5, name: "下城區", parentId: 3 }, { id: 6, name: "江蘇省", parentId: 1 }, { id: 7, name: "南京市", parentId: 6 }, { id: 8, name: "鼓樓區", parentId: 7 }, { id: 9, name: "玄武區", parentId: 7 }, ]; var memoryStore = new Memory({ data: data }); var objectStore = new ObjectStore({ objectStore: memoryStore }); // 將 parentId 為 0 的節點作為根節點 var rootId = 0; var rootNode = { id: rootId, name: "根節點", children: [] }; // 獲取 parentId 為 rootId 的節點 objectStore.query({ parentId: rootId }).forEach(function(item){ var node = { id: item.id, name: item.name, children: [] }; // 獲取當前節點的子節點 objectStore.query({ parentId: item.id }).forEach(function(child){ node.children.push({ id: child.id, name: child.name }); }); // 將子節點添加到當前節點中 rootNode.children.push(node); }); console.log(rootNode); });
以上代碼中,首先使用了Dojo中的dojo/data/ObjectStore和dojo/store/Memory組合創建了一個數據存儲區,在初始化時,將JSON數據傳入Memory中。
然后,創建了一個根節點,根節點的parentId設為0,接著使用objectStore.query函數獲取parentId為0的節點,遍歷這些節點,并將它們的子節點逐一獲取,添加到根節點的children數組中。
最后,得到的rootNode就是一棵樹。
上一篇c 怎么讀取json