Структура входных данных JSON для визуализации древовидной карты D3.js

В настоящее время я работаю с визуализацией древовидной карты для D3.js и надеялся понять, как происходит вспышка. json, использованный в примере, организован. Должен ли формат входного файла json иметь ту же структуру, что и в примере. У меня есть входной файл от поискового робота со списком URL-адресов и их соответствующих родительских URL-адресов. Я пытался использовать что-то вроде следующего, но это не сработает, и я не уверен, что это просто другая структура или что-то еще.

списокURLs.json:

{
 "name": "flare",
 "children": [
    {"children":"http:\/\/a.wholelottanothing.org","name":"http:\/\/buzz.blogger.com"},              
    {"children":"http:\/\/www.bitworking.org","name":"http:\/\/buzz.blogger.com"},   
    {"children":"http:\/\/blog.computationalcomplexity.org","name":"http:\/\/buzz.blogger.com"},  
    {"children":"http:\/\/www.blogactionday.org","name":"http:\/\/buzz.blogger.com"}, 
    {"children":"http:\/\/www.wikipaintings.org","name":"http:\/\/littlegreeniguana.blogspot.com"}
    ]
}

Я знаю, что это сильно отличается от файла flash.json, используемого в примере, но может ли это работать? Кроме того, ввод, который я использую, не включает параметр «размер», что, вероятно, также является причиной того, что вывод пуст. Как я могу использовать размер здесь? Можно ли его динамически настроить позже в коде? Любая помощь будет принята с благодарностью, я новичок в D3!


person Darth Coder    schedule 22.09.2014    source источник
comment
Этот ответ помог, когда у меня возникла аналогичная проблема.   -  person Osman Mazinov    schedule 22.09.2014


Ответы (1)


Иерархический формат данных, ожидаемый для дерева, пакета и других иерархических макетов D3, предполагает, что «дочерние элементы» будут массивом объектов, и обходит эти иерархические данные при подготовке к форматированию ваших объектов для отображения с использованием макетов. Таким образом, вы не хотите использовать «дочерние элементы» для хранения одной ссылки, вместо этого вы хотите, чтобы он хранил массив объектов, отформатированных так же, как родительский объект (даже если в этом массиве есть только одна вещь). Немного сложно понять, что вы пытаетесь отобразить в своем наборе данных, но я предполагаю, что все эти веб-сайты находятся под buzz.blogger.com, кроме последнего, в этом случае правильно отформатированные иерархические данные будут выглядеть так (Примечание что все вложено в корневой узел, который вы можете назвать как хотите):

{
 "name": "root node",
 "children": [
  {"name":"http:\/\/buzz.blogger.com", "children": [
   {"name": "http:\/\/www.bitworking.org"},
   {"name": "http:\/\/blog.computationalcomplexity.org"},
   {"name": "http:\/\/www.blogactionday.org"}
   ]
  },
  {"name":"http:\/\/littlegreeniguana.blogspot.com", "children": [
   {"name": "http:\/\/www.wikipaintings.org"}
   ]
  }
 ]
}
person Elijah    schedule 23.09.2014