在Javascript中将数组转换为嵌套的JSON?

时间:2015-07-02 13:44:40

标签: javascript jquery arrays json logic

基本上我想创建一个树形结构。例如,如果您有四个项目的数组[' a',' b',' c',' d']那么我需要这个JSON应该是

{a: {b: {c: {d: 0} } } }

JSON的最后一项值为0,或者它可以是除object之外的任何内容。

2 个答案:

答案 0 :(得分:5)

转换步骤很简单,循环简单:

  • 反转数组,所以最后一个变成第一个转换(并且它成为JSON的最内层元素)。
  • 遍历每个元素,创建对象的键值对,重复包装。
  • 完成

示例代码:

var array = ['a', 'b', 'c', 'd']; // input array
var json = {}; // output object
array.reverse().forEach(function(el){
    if (Object.keys(json).length==0){
        json[el] = 0;
    }
    else{
        var outer = {};
        outer[el] = json;
        json = outer;
    }
});

<强>输出

  

{“a”:{“b”:{“c”:{“d”:0}}}}

答案 1 :(得分:1)

在ES5环境中。

&#13;
&#13;
var data = ['a', 'b', 'c', 'd'],
    jsObject = data.reduceRight(function (acc, datum) {
        var val = {};
            
        val[datum] = acc;
        
        return val;
    }, 0),
    jsonString = JSON.stringify(jsObject);

document.getElementById('out').textContent = jsonString;
&#13;
<pre id="out"></pre>
&#13;
&#13;
&#13;