展平和取消JSON结构

时间:2016-09-01 17:13:27

标签: javascript json node.js

我正在编写一些javascript来展平和取消嵌套的JSON结构。例如,一个看起来像这个{"bim":[1,2,[6,7]]}的对象将被转换为另一个看起来像{'@@#root#@@': { bim: 'bim/1' },'bim/1': [ 1, 2, '2/4' ],'2/4': [ 6, 7 ] }的JSON对象

其中@@#root#@@是我用来确定哪个对象是整个结构的根的标识符。到目前为止,我已经能够为我的大多数测试用例重建原始的JSON结构。但是有几个测试用例一直在失败。我提供了两个这样的例子

{ '@@#root#@@': { bim: 'bim/1' },'bim/1': [ 1, 2, '2/4', 5,'4/8'],'2/4':[ 6, 7 ],'4/8': { '35': 55 } }

{ '@@#root#@@': { bim: 'bim/1' },'bim/1': [ 1, 2, '2/4', '3/6' ],'2/4':{ '34': 55 },'3/6': [ 6, 7 ] }

在这两种情况下,都有一个包含数组和JSON对象的数组。这似乎是我的测试失败的唯一情况。在所有其他情况下,它们运行得很好,并返回原始的JSON结构。

function rebuild( parent){
 _.forEach(parent, function(value, key){
        if(notVisited(value) && isRef(value)){
            visited.push(value);
            remove(parent, key);
            parent[key] = globObj[value]; 
            parent = parent[key];
            rebuild(parent);
        }
    });
};

globObj是一个将引用映射到其对象的对象。我正在尝试进行深度优先搜索,当我遇到它时,我递归地用它们的原始对象替换引用。有什么东西我不见了吗?

0 个答案:

没有答案