将平面JSON对象转换为树数据结构

时间:2014-08-14 08:51:48

标签: javascript json d3.js neo4j

我需要使用d3.js在图表视图中表示Neo4j节点。然而,Neo4j的输出是一个扁平的Json结构如下

Parent|Child
______|_____
A     |B
A     |C
A     |D
B     |E
B     |F
C     |G
D     |H
D     |I

但是我需要一个Tree数据结构才能使用d3.js库可视化数据。

如何将其转换为如下结构

 {
 "name": "A",
 "children": [
  {
   "name": "B",
   "children": [
    {
     "name": "E",
     "children": []
    },
    {
     "name": "F",
     "children": []
    }
   ]
  "name": "C",
  "children":[
      {
      "name":"G"
      "children":[]
      }
      ]
  }

依旧.....

2 个答案:

答案 0 :(得分:2)

mkpchiran,

这不是一个完整的解决方案,但您至少可以通过查询此表单(假设您有通过以下方式链接的节点:CHILD_OF关系)获得部分方式:

MATCH (p)<-[:CHILD_OF]-(c)
WITH p, collect(c) AS cs
RETURN p, cs

这将为您提供每个父母的子集合,所以有以下几点:

A, [B, C, D]
B, [E, F]
C, [G]
D, [H, I]

希望这有点帮助。

恩典与和平,

吉姆

答案 1 :(得分:1)

您还可以查看我的cy2neo项目,该项目在javascript中解决了这个问题,即它使用来自resultDataContents:graph的密码查询的结果,并使用alchemy.js将它们渲染为d3-graph