将数组转换为 Javascript 中的嵌套 JSON?
Convert Array To Nested JSON in Javascript?
基本上我想创建一个树结构。例如,如果您有一个包含四个项目的数组 ['a'、'b'、'c'、'd'],那么我需要一个 JSON,它应该是
{a: {b: {c: {d: 0} } } }
JSON 的最后一项的值为 0,或者它可以是对象以外的任何值。
转换步骤简单,循环简单:
- 反转数组,所以最后一个成为第一个转换(并且它成为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 环境中。
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>
基本上我想创建一个树结构。例如,如果您有一个包含四个项目的数组 ['a'、'b'、'c'、'd'],那么我需要一个 JSON,它应该是
{a: {b: {c: {d: 0} } } }
JSON 的最后一项的值为 0,或者它可以是对象以外的任何值。
转换步骤简单,循环简单:
- 反转数组,所以最后一个成为第一个转换(并且它成为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 环境中。
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>