javascript — Отображение столбцов Excel в родительский-JSON

У меня есть вход CSV, как это:

Column1,Column2,Column3,Column4,Column5
a,b,c,d,e
a,b,f,,
a,g,h,i,
j,k,l,,
j,k,m,n,
o,,,,

И я пытаюсь преобразовать это в вывод JSON, который соответствует этому формату (http://bl.ocks.org/mbostock/raw/4063550/flare.json) так что я могу использовать d3.js для визуализации родительско-дочернего дерева (http://bl.ocks.org/mbostock/4063570).

Я стараюсь визуализировать свои данные в точности как в этом примере, но мне не нужны веса. При необходимости я могу добавить общего родителя первого уровня. Просто глядя на визуализацию дерева (ов).

Наибольшая глубина всегда 5.

Я играл с массивами в PHP (после чтения с помощью fgetcsv ()), но я возился и мог использовать некоторую помощь.

Предпочтение отдается PHP или Javascript, так как это все, с чем я могу работать через настройку своего рабочего компьютера. Я очень ценю помощь!

0

Решение

У меня есть вход CSV, как это:

Column1,Column2,Column3,Column4,Column5
a,b,c,d,e
a,b,f,,
a,g,h,i,
j,k,l,,
j,k,m,n,
o,,,,

И я пытаюсь преобразовать это в вывод JSON, который соответствует этому формату (http://bl.ocks.org/mbostock/raw/4063550/flare.json) так что я могу использовать d3.js для визуализации родительско-дочернего дерева (http://bl.ocks.org/mbostock/4063570).

Я стараюсь визуализировать свои данные в точности как в этом примере, но мне не нужны веса. При необходимости я могу добавить общего родителя первого уровня. Просто глядя на визуализацию дерева (ов).

Наибольшая глубина всегда 5.

Я играл с массивами в PHP (после чтения с помощью fgetcsv ()), но я возился и мог использовать некоторую помощь.

Предпочтение отдается PHP или Javascript, так как это все, с чем я могу работать через настройку своего рабочего компьютера. Я очень ценю помощь!

самый старый «data-shortcut =» O

Другие решения

Похоже, вы ищете древовидную структуру, где ваши данные выглядят следующим образом:

          a            j      o
/ \          /
b   g        k
/ \   \      / \
c   f   h    l   m
/         \        \
d           i        n
/
e

Если это так, следующий код JavaScript должен делать то, что вы хотите:

var csv = //CSV CONTENT HERE
, data = parseCSV(csv)
, structure = toJSONStructure(data)
, formattedForD3 = toNameChildFormat(structure)

console.log(formattedForD3)

function parseCSV(csv) {
return csv.split('\n').slice(1).map(function(line) {
return line.split(',')
})
}

function toJSONStructure(data) {
var structure = {}
data.forEach(function(line) {
var o = structure
line.forEach(function(val) {
if(val) o = o[val] = o[val] || {}
})
})
return structure
}

function toNameChildFormat(structure) {
return Object.keys(structure).map(function(key) {
return {
name:key,
children:toNameChildFormat(structure[key])
}
})
}

JSFiddle Demo

голосует «data-shortcut =» V

1