如何将json树转换为表,然后返回(同一个表转换为json树)

时间:2014-11-25 20:05:40

标签: json postgresql tree

我需要将json树转换为表,然后返回(将相同的表转换为json树), PostgreSQL 例如:

{
"id": 1,
"title": "Example Node(UnDeleteable, and no counted)",
"items": [
{
"id": 2,
"title": "dfsdfs",
"items": [
{
"id": 3,
"title": "dfsfddfsfd",
"items": [
{
"id": 4,
"title": "dsffdsdfsfdsdfs",
"items": [
{
"id": 5,
"title": "dfsdsfdfsddfs",
"items": []
}
]
}
]
}
]
}
]
}
]

需要:

            ParentId  ChildId   title

            NULL        1    "Example Node(UnDeleteable, and no counted)"
            1           2    "dfsdfs"
            2           3    "dfsfddfsfd"
     

等   ....   ...   ...   有人可以帮我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我认为你需要的只是一个二维数组和递归。 这是关于将json转换为树的代码。我认为通过一些修改很容易满足您的需求。

var jsonTreeServ = {};
jsonTreeServ.toTreeJson = function (jsonObj, treeArr) {
    for (var k in jsonObj) {
        var val = jsonObj[k];
        if (val instanceof Object) {
            var node = {};
            node.title = k;
            node.value = '';
            node.visible = true;
            node.nodes = [];
            treeArr.push(node);
            jsonTreeServ.toTreeJson(val, node.nodes);
        } else {
            var node = {};
            node.title = k;
            if(null!==val && ''!==val){
                node.title += '=';
                val = jsonTreeServ.translateTimestamp(node.title, val);
            }
            node.value = val;
            node.visible = true;

            treeArr.push(node);
        }
    }


    return treeArr;
}