【问题标题】:Converting a flat JSON Object to a Tree Data Structure将平面 JSON 对象转换为树形数据结构
【发布时间】:2014-08-14 08:51:47
【问题描述】:

我需要使用 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":[]
      }
      ]
  }

等等……

【问题讨论】:

  • 如果在 d3.js 中使用此数据结构是必需的,那么它更适合作为 JavaScript 中的后处理步骤。据我所知,您无法在 Neo4j 中递归嵌套地图,因为无法进行键分配。
  • 是的,但这是一个艰难的过程。数据集也很大,我无法一次获得所有数据。

标签: javascript json d3.js neo4j


【解决方案1】:

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]

希望这会有所帮助。

恩典与和平,

吉姆

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-11-08
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      相关资源
      最近更新 更多