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

Converting a flat JSON Object to a Tree Data Structure

本文关键字:数据结构 转换 平面 JSON 对象      更新时间:2023-09-26

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

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

然而,我需要一个树数据结构,以便使用d3.js库可视化数据。

如何将其转换为如下结构

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

等.....

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]

希望这对你有帮助。

恩典与平安,

吉姆

你也可以检查我的cy2neo项目,它在javascript中解决了这个问题,即它使用resultDataContents:graph的密码查询结果,并使用alchemy.js

将它们呈现为3d图。