Javascript 转换点符号json

Javascript 转换点符号json,javascript,json,Javascript,Json,我得到了一个json对象,如下所示: { "c.employees": "222", " c.arr[0].name": "thomas", " c.arr[0].amount": 3, } 我想把它转换成像 { c:{ employees:"222", arr:[{name:thomas,amount:3}] } } 找不到任何解决方案:/数组是问题所在没有简单的解决方案,您需要解析所有键并构建中间对象和数组。由于这不是小事,下面是代码: var input = { "c.

我得到了一个json对象,如下所示:

{
 "c.employees": "222",
 " c.arr[0].name": "thomas",
 " c.arr[0].amount": 3,
}

我想把它转换成像

{
 c:{
 employees:"222",
 arr:[{name:thomas,amount:3}]
 }
}

找不到任何解决方案:/数组是问题所在

没有简单的解决方案,您需要解析所有键并构建中间对象和数组。由于这不是小事,下面是代码:

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);
var输入={
“c.雇员”:“222”,
“c.arr[0].名称:”“thomas”,
“c.arr[0]。金额:3,
};
var输出={};
for(输入中的var键){
var tokens=key.trim().split('.'),
obj=输出;

对于(var i=0;iI恐怕没有简单的解决方案,您必须编写一个小型解析器(我想有十几行)。原始JSON是从哪里来的?是否有正当的理由以这种格式生成它,或者是否可以更改源代码以生成实际有用的内容?