将平展的键值对转换为嵌套对象>
Convert flattened key->value pairs to a nested object
将以下键>值对象"array"转换为适当的"JSON"样式对象的最简单方法是什么?下面的示例将输入转换为图形。
var input = {
"graph.default.seriesColor" : ["#cccccc", "#3c3c3c"],
"graph.default.stackSeries" : false,
"graph.default.title.text" : "Hello!",
"graph.default.title.show" : false,
"graph.default.axesDefaults.show" : true,
"graph.default.axesDefaults.min" : 17,
"graph.default.axesDefaults.max" : 20,
};
var graph = {
default: {
seriesColor: ["#cccccc", "#3c3c3c"],
stackSeries: false,
title: {
text: "Hello!",
show: false
},
axesDefault: {
show: true,
min: 17,
max: 20
}
}
};
我考虑过使用 eval,但它很快就以递归的方式变得复杂。
出于某种原因,我真的很想为此编写一个函数:
function makeObj(input)
{
var output = {};
for(var key in input)
{
var nodes = key.split('.'), dest = output;
if(nodes.length < 1)
continue;
for(var i = 0; i < (nodes.length - 1); ++ i)
{
var node = nodes[i];
dest = (dest[node] === undefined) ?
(dest[node] = {}) : dest[node];
}
dest[nodes[nodes.length - 1]] = input[key];
}
return output;
}
graph = makeObj(input);
显然,与eval
解决方案不同,它只接受您描述的确切格式 (x.y.z) 的字符串。
相关文章:
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- 如何打印嵌套对象的所有值
- 设置嵌套对象属性的更好方法
- 访问嵌套JSON对象的键,其中键是动态的
- 嵌套对象结构
- 如何递归地获取嵌套对象中所有子对象的列表
- 更改嵌套对象的父子相关id
- Node.js:用作对象嵌套元素名称的变量
- Sailsjs创建对象-嵌套创建
- Jquery $.ajax 获取响应与将“this”对象嵌套传递到“success”回调函数冲突
- 从嵌套属性数组中获取对象嵌套值
- 将对象嵌套在另一个数组中
- javascript对象嵌套回调
- 当被引用对象嵌套在ExtJS 5.0.0中时,如何读取它
- 如何在不知道其位置的情况下删除Mongo对象(嵌套的2个数组)
- 排序嵌套在对象中的数组,该对象嵌套在另一个对象中
- Javascript对象嵌套
- 在Angular中创建多维/嵌套对象(嵌套forEach循环)
- 仅列出jquery中包含json对象嵌套的所有键
- 如何将一个javascript对象嵌套在另一个对象中