标签分离树到 JSON

qub*_*00n 2 javascript tree json

我该如何转换这样一个制表符分隔的文本树:

a
    a1
        a3
    a2
Run Code Online (Sandbox Code Playgroud)

变成这样的 JSON 格式树:

[
{
    "name":"a",
    "children":[
        {
            "name":"a1",
            "children":[
                {
                    "name":"a3",
                    "children":[]
                }
            ]
        },
            {
                "name":"a2"
                "children":[]
            }
    ]
}
]
Run Code Online (Sandbox Code Playgroud)

在 JavaScript 中?我想你明白了,我想将制表符\t分隔的树结构转换为 JSON 树结构。谢谢!

Nin*_*olz 5

您可以将数据拆分为行和单独的选项卡,以获取级别和名称。

要创建一棵树,需要一个已知级别的数组,并将每个新节点分配给级别的数组和下一个级别。

var data = 'a\n\ta1\n\t\ta3\n\ta2',
    tree = [];
    levels = [tree];
    
data
    .split('\n')
    .forEach(s => {
        const [{ length: level }, name] = s.split(/([^\t]+)/);
        levels[level].push({ name, children: levels[level + 1] = [] });
    });

console.log(tree);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)