如何将链接映射转换为基于树的JSON?

时间:2019-04-05 14:17:17

标签: data-visualization

我想用d3JS绘制网络图表,并且在格式化数据时遇到一些麻烦。我的预期结果是得到此图表:https://bl.ocks.org/mbostock/1062288

作为输入,我具有以下数据集(简化):

注意1:我必须在包含+ 1M行的文件中执行

注2:我正在使用PHP创建JSON / Python也可以

from, to
https://example.org/, https://example.org/dir1/page/1.html
https://example.org/, https://example.org/dir1/page/2.html
https://example.org/, https://example.org/dir1/page/3.html
https://example.org/, https://example.org/dir2/page/1.html
https://example.org/, https://example.org/dir2/page/2.html
https://example.org/, https://example.org/dir3/page/1.html
https://example.org/, https://example.org/dir4/page/2.html
https://example.org/, https://example.org/dir5/page/3.html
https://example.org/dir1/page/1.html, https://example.org/
https://example.org/dir1/page/1.html, https://example.org/dir1/page/2.html
https://example.org/dir1/page/1.html, https://example.org/dir1/page/3.html
https://example.org/dir1/page/1.html, https://example.org/dir2/page/1.html
https://example.org/dir1/page/2.html, https://example.org/
https://example.org/dir1/page/3.html, https://example.org/dir1/page/2.html
https://example.org/dir1/page/3.html, https://example.org/dir2/page/1.html
https://example.org/dir1/page/3.html, https://example.org/dir2/page/1.html
https://example.org/dir2/page/1.html, https://example.org/dir6/page/1.html
https://example.org/dir3/page/1.html, https://example.org/dir7/page/1.html
https://example.org/dir5/page/1.html, https://example.org/
https://example.org/dir6/page/1.html, https://example.org/
https://example.org/dir6/page/1.html, https://example.org/dir7/page/1.html

当URL中的每个目录成为一个节点,然后是子节点时,我想将其转换为树基节点。

例如,此URL https://example.org/dir1/page/1.html将以dir1作为节点,page是子节点,然后1.htmlpage的子节点。

我想要得到的是类似的东西:

    {
 "name": "https://example.org/",
 "children": [
  {
   "name": "dir1",
   "children": [
    {
     "name": "page",
     "children": [
        {"name": "page",
        "children": [
            {"name": "1", "size": 3534},
            {"name": "1", "size": 3534}
            {"name": "3", "size": 3534}
      ]}
     ]
    },
    {
     "name": "dir2",
     "children": [
      {"name": "page",
        "children": [
            {"name": "1", "size": 3534},
            {"name": "2", "size": 3534}
      ]}
     ]
    },
    {
     "name": "dir3",
     "children": [
      {"name": "page",
        "children": [
            {"name": "page",
              "children": [
              {"name": "1", "size": 3534},
      ]}
      ]}
     ]
    },
    {
     "name": "dir4",
     "children": [
      {"name": "page",
        "children": [
            {"name": "2", "size": 3534}
      ]}
     ]
    },
    {
     "name": "dir5",
     "children": [
      {"name": "page",
        "children": [
            {"name": "3", "size": 3534}
      ]}
     ]
    }
  ]
}],
...
}

有什么主意吗?谢谢

0 个答案:

没有答案