Как преобразовать карту ссылок в дерево на основе JSON? - PullRequest
0 голосов
/ 05 апреля 2019

Я хотел бы нарисовать сетевой график с помощью 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.html дочернего для page...

что я хочу получить, это что-то вроде:

    {
 "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}
      ]}
     ]
    }
  ]
}],
...
}

есть идеи?спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...