在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中将JSON字符串转换为JSON对象数组
在淘汰赛中将 JSON 数据转换为 Javascript 数组
如何在 Javascript 中将表单数组转换为 JSON? (对象数组)?