我是学习Ruby的新手。在程序中,我使用acts_as_tree从分层表构建组织树。现在,我希望从树节点中包含的数据构建一个JSON字符串。在JSON输出中,每个父节点都有一个名为' children'它将包含父节点子节点的记录数组。要构建这样的JSON字符串,可以选择手动遍历整个树。但是,我想知道的是,还有其他方式比这更优雅。
答案 0 :(得分:1)
我已经在另一个项目中完成了这项工作,但是使用了自己种植的树结构。您需要覆盖对象上的as_json
。我认为这样做:
def as_json(opts = {})
super(opts.merge(include: :children))
end
就足够了,而且可能是 - 我的代码库可能还有其他问题阻止它工作。但是,我能够这样做:
def as_json(opts = {})
super(opts).merge(children: children.as_json)
end
这实际上创建了一个递归as_json
调用,因为as_json
将在所有子元素上调用,然后将对其子元素调用as_json
方法,依此类推。
答案 1 :(得分:0)
您是否看过JSON库?
尝试:
require 'json'
your_object.root.to_json
甚至只是:
require 'json'
your_object.to_json
您可以从根,对象和子项创建哈希和数组......
{root: your_object, children: your_object.children }.to_json
由于我从未使用acts_as_tree
库,因此我不确定这是否会有所帮助。