我有一个像这样的json对象:
{
"c.employees": "222",
" c.arr[0].name": "thomas",
" c.arr[0].amount": 3,
}
我想将其转换为像
这样的对象{
c:{
employees:"222",
arr:[{name:thomas,amount:3}]
}
}
无法找到任何解决方案:/数组是问题
答案 0 :(得分:2)
没有简短的解决方案,您需要解析所有密钥并构建中间对象和数组。由于这不是微不足道的,这里是代码:
var input = {
"c.employees": "222",
" c.arr[0].name": "thomas",
" c.arr[0].amount": 3,
};
var output = {};
for (var key in input) {
var tokens = key.trim().split('.'),
obj = output;
for (var i=0; i<tokens.length-1; i++) {
var m = tokens[i].match(/^(\w+)\[(\d+)\]$/); // array ?
if (m) {
var arr = obj[m[1]];
if (!arr) arr = obj[m[1]] = [];
obj = arr[m[2]] = arr[m[2]]||{};
} else {
obj = obj[tokens[i]] = obj[tokens[i]]||{};
}
}
obj[tokens[i]] = input[key];
}
console.log(output);
demo(打开控制台)