将 Excel 列映射到父子 JSON
Mapping Excel Columns to Parent-Child 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,,,,
我正在尝试将其转换为符合此格式 (http://bl.ocks.org/mbostock/raw/4063550/flare.json) so I can leverage d3.js to visualize the parent-child tree (http://bl.ocks.org/mbostock/4063570) 的 JSON 输出。
我希望完全像那个例子一样可视化我的数据,但我没有 have/need 权重。如果需要,我可以添加一个普通的一级父级。只是想可视化树。
最大深度始终为 5。
我在 PHP 中尝试做一些数组的事情(在阅读 fgetcsv() 之后),但我笨手笨脚,需要一些帮助。
首选 PHP 或 Javascript 解决方案,因为这是我在工作计算机设置中可以使用的全部内容。非常感谢您的帮助!
听起来您正在寻找一个树结构,您的数据如下所示:
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])
}
})
}
我有这样的 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,,,,
我正在尝试将其转换为符合此格式 (http://bl.ocks.org/mbostock/raw/4063550/flare.json) so I can leverage d3.js to visualize the parent-child tree (http://bl.ocks.org/mbostock/4063570) 的 JSON 输出。
我希望完全像那个例子一样可视化我的数据,但我没有 have/need 权重。如果需要,我可以添加一个普通的一级父级。只是想可视化树。
最大深度始终为 5。
我在 PHP 中尝试做一些数组的事情(在阅读 fgetcsv() 之后),但我笨手笨脚,需要一些帮助。
首选PHP 或 Javascript 解决方案,因为这是我在工作计算机设置中可以使用的全部内容。非常感谢您的帮助!
听起来您正在寻找一个树结构,您的数据如下所示:
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])
}
})
}