我有一个数据集
parent , child
--------------
一、二
一、三
b,d
b,e
c,f
c,g
g,h
克,我
p,q
p,r
q,s
q,t
我想转换成 JSON 对象。我正在尝试做但不知道正确的方法。所以我只是创建了一个可能有助于解决它的数据集的树结构。你能给我建议怎么做才能实现这一目标吗?
我面临问题,如何识别父节点。如果有两棵树,如图所示。请建议我该怎么做。
这个输出应该是
{
a:{
b: {d,e},
c: { g: {h,i}, f }
},
p:{ q:{s,t}, r }
}
最佳答案
首先,我将从寻找所有根开始。这可以通过使用一些现有模块(我不知道是哪个......)从输入对构建树结构来完成,但这可以更简单地完成。如果您创建两组:一组包含所有父项,另一组包含所有子项,然后从子项中减去父项 - 您将得到根。
然后,从根开始,你可以构建字典,然后将其转换为JSON(抱歉,我不擅长java,所以用伪代码写这个)。
for r in roots:
## init dictionary key with value = dictionary or Null
dict[r] = build_tree(r, pairs)
因此,很明显,build_tree() 应该是字典的递归更新,在每个阶段您创建一个新字典,其键是输入父项的子项,值等于 build_tree( ) 或 Null 如果找不到更多的 child 。 在最后阶段,当然应该有将字典保存为JSON的方法。
注意:上面假设你没有圆圈,但如果你有 - 你需要更复杂的算法并对你如何做一些假设,例如,停止递归并对圆圈的开头进行“某种”引用.
关于java - 如何从 Hadoop MR 中的非结构化数据生成 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27266296/