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

Posted

技术标签:

【中文标题】在Javascript中将数组转换为嵌套的JSON?【英文标题】:Convert Array To Nested JSON in Javascript? 【发布时间】:2015-09-20 02:05:57 【问题描述】:

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

a: b: c: d: 0   

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

【问题讨论】:

你已经尝试了什么? “递归” 浮现在脑海中...... 你想要 JSON 字符串还是 javascript 对象? 【参考方案1】:

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

反转数组,所以最后一个成为第一个转换的元素(它成为 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

【讨论】:

如果你打算使用 ES5 方法,使用 reduceRight 会是一个更简单的解决方案。【参考方案2】:

在 ES5 环境中。

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;
<pre id="out"></pre>

【讨论】:

以上是关于在Javascript中将数组转换为嵌套的JSON?的主要内容,如果未能解决你的问题,请参考以下文章

如何在javascript中将嵌套集转换为嵌套数组?

在Javascript中将JSON字符串转换为JSON对象数组

在淘汰赛中将 JSON 数据转换为 Javascript 数组

如何在 Javascript 中将表单数组转换为 JSON? (对象数组)?

在 Javascript 中将 Map 转换为 JSON 对象

在Ruby中将嵌套哈希键从CamelCase转换为snake_case