Javascript csv数据到d3中嵌套的json树

Javascript csv数据到d3中嵌套的json树,javascript,json,csv,tree,d3.js,Javascript,Json,Csv,Tree,D3.js,我有一个csv数据文件,看起来像这样 root,y,i,5 root,c,b,a,7 root,c,b,z,2 根,y,i,5 根,c,b,a,7 根,c,b,z,2 我希望生成类似于以下数据文件的内容: { "name": "root", "children": [ { "name": "y", "children": [ { "name": "i", "value": 5 }

我有一个csv数据文件,看起来像这样

root,y,i,5 root,c,b,a,7 root,c,b,z,2 根,y,i,5 根,c,b,a,7 根,c,b,z,2 我希望生成类似于以下数据文件的内容:

{ "name": "root", "children": [ { "name": "y", "children": [ { "name": "i", "value": 5 } ] }, { name: "c", "children": [ { "name": "b", "children": [ { "name": "a", "value": 7 }, { "name": "z", "value": 2 } ] } ] } ] }
var nested_data = d3.nest()
  .key(function(d) { return d[0]; })
  .key(function(d) { return d[1]; })
  .entries(csv_data);
{ “名称”:“根”, “儿童”:[ { “名称”:“y”, “儿童”:[ { “姓名”:“我”, “价值”:5 } ] }, { 名称:“c”, “儿童”:[ { “名称”:“b”, “儿童”:[ { “姓名”:“a”, “价值”:7 }, { “名称”:“z”, “价值”:2 } ] } ] } ] } 我看到其他人提出了一个[类似的问题](,但数据甚至是在每个csv行都有
n
元素的意义上。我有不同长度的
n


有人能帮忙吗?

我会使用d3 nest函数来完成这项工作。您可以在这里找到有关如何使用它的文档:

解决方案如下所示:

{ "name": "root", "children": [ { "name": "y", "children": [ { "name": "i", "value": 5 } ] }, { name: "c", "children": [ { "name": "b", "children": [ { "name": "a", "value": 7 }, { "name": "z", "value": 2 } ] } ] } ] }
var nested_data = d3.nest()
  .key(function(d) { return d[0]; })
  .key(function(d) { return d[1]; })
  .entries(csv_data);

我将使用d3 nest函数来完成此操作。您可以在此处找到有关如何使用它的文档:

解决方案如下所示:

{ "name": "root", "children": [ { "name": "y", "children": [ { "name": "i", "value": 5 } ] }, { name: "c", "children": [ { "name": "b", "children": [ { "name": "a", "value": 7 }, { "name": "z", "value": 2 } ] } ] } ] }
var nested_data = d3.nest()
  .key(function(d) { return d[0]; })
  .key(function(d) { return d[1]; })
  .entries(csv_data);

听起来你想改变生成该数据的任何内容来生成层次结构。CSV实际上并不适用于这种不规则的格式,你在处理它时会遇到困难。听起来你想改变生成该数据的任何内容来生成层次结构。CSV实际上不适用于ra像这样的格式,您在处理时会遇到困难。这只有在定义了列数的情况下才有效。否?我的问题是我的列是可变的。如果您只想按前两列分组,这应该可以。如果您需要使用任意列,您可以将其与下划线.js和tr结合使用避免使用新的嵌套数据,在适当的时候再次嵌套。这仅在定义了列数的情况下才有效。否?我的问题是我的列是可变的。如果只想按前两列分组,这应该可以。如果需要使用任意列,可以将其与下划线.js结合,并遍历thr通过新的嵌套数据,在适当的时候再次嵌套。