Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自定义jstree JSON数据解析到树中_Javascript_Json_Jstree - Fatal编程技术网

Javascript 自定义jstree JSON数据解析到树中

Javascript 自定义jstree JSON数据解析到树中,javascript,json,jstree,Javascript,Json,Jstree,我有一个简单的JSON数据,如下所示: [ "env/child1/env/key1", "env/child1/key1", "env/child1/key2", "env/child1/", "env/child2/key1", "env/child2/key2", "env/child2/", "env/" ] 如何让jsTree理解这棵树并绘制这棵树 环境 孩子1 关键1 键2 我是否需要编写自定义解析函数,或者是否有现成

我有一个简单的JSON数据,如下所示:

[  
   "env/child1/env/key1",
   "env/child1/key1",
   "env/child1/key2",
   "env/child1/",
   "env/child2/key1",
   "env/child2/key2",
   "env/child2/",
   "env/"
]
如何让jsTree理解这棵树并绘制这棵树

  • 环境
    • 孩子1
      • 关键1
      • 键2

我是否需要编写自定义解析函数,或者是否有现成的方法来实现这一点。

上述数据缺少父项“env/child1/env/”而子项“env/child1/env/key1”
tree = {
    'core' : {
        'data' : [
        ]
    } 
}

data = [  
   "env/child1/env/key1",
   "env/child1/key1",
   "env/child1/key2",
   "env/child1/",
   "env/child2/key1",
   "env/child2/key2",
   "env/child2/",
   "env/"
];

minlen = -1;
picked = "";
for(i =0; i<data.length; i++) {
    if(data[i].length < minlen || minlen == -1) {
        minlen = data[i].length;
        picked = data[i];
    }
}

tree.core.data.push({ "id" : picked, "parent" : "#", "text" : picked })
xdata = data
xdata.splice(xdata.indexOf(picked), 1)

for(i =0; i<xdata.length; i++) {
    name = xdata[i]
    parent = ""
    if(name.substr(name.length-1,1) == '/') {
        xname = name.substr(0,name.length-1);
        parent = xname.substr(0,xname.lastIndexOf("/")+1)
    } else {
        parent = name.substr(0,name.lastIndexOf("/")+1)
    }
    tree.core.data.push({ "id" : name, "parent" : parent, "text" : name })
}
console.log(tree);
1.更正如下: 数据=[ “env/child1/env/” “env/child1/env/key1”, “env/child1/key1”, “env/child1/key2”, “环境/儿童1/”, “env/child2/key1”, “env/child2/key2”, “环境/儿童2/”, “env/” ];

  • 父对象获取子对象值的完整代码如下:

  • 从jsTree网站判断,首先需要根据要构建的树实例化DOM。你有密码吗?你把jstree初始化放在$(文档)中了吗。准备好了吗?我还没有准备好任何东西,也许是一些指导,告诉我如何启动ps:我正在使用原始jstree包中的演示文件。你能改变JSON的外观吗?你能扩展一下吗?这是我得到的json,它的结构是固定的,不能更改的DJS树告诉你应该如何构造数据:。因此,您可能应该更改数组以遵循该格式。它一直有效,直到我必须在根环境旁边创建另一个文件夹
    {
      "core": {
        "data": [
          {
            "id": "env/",
            "parent": "#",
            "text": "env/"
          },
          {
            "id": "env/child1/env/key1",
            "parent": "env/child1/env/",
            "text": "env/child1/env/key1"
          },
          {
            "id": "env/child1/key1",
            "parent": "env/child1/",
            "text": "env/child1/key1"
          },
          {
            "id": "env/child1/key2",
            "parent": "env/child1/",
            "text": "env/child1/key2"
          },
          {
            "id": "env/child1/",
            "parent": "env/",
            "text": "env/child1/"
          },
          {
            "id": "env/child2/key1",
            "parent": "env/child2/",
            "text": "env/child2/key1"
          },
          {
            "id": "env/child2/key2",
            "parent": "env/child2/",
            "text": "env/child2/key2"
          },
          {
            "id": "env/child2/",
            "parent": "env/",
            "text": "env/child2/"
          }
        ]
      }
    }