有没有办法将包含数组的对象键转换为对象?

这是我当前的对象:


{"or_11[and_3][gt@last_closed_sr]":"2019-06-18"}

我希望它看起来像:


{

  "or_11": {

    "and_3": {

      "gt@last_closed_sr": "2019-06-18",

    }

  }

}

做这个的最好方式是什么?


九州编程
浏览 179回答 2
2回答

慕哥6287543

一般来说,对格式不佳的数据的答案是修复格式化程序,而不是实现解析器。但是,我使用过像这样对数据进行编码的系统,所以这里有一个解析器。function parseSquareSeparatedData(data) {  const result = {};  Object.keys(data).forEach((key) => {    const keyParts = key.replace(/]/g, "").split("[");    const last = keyParts.pop();    let resultPointer = result;    keyParts.forEach((keyPart) => {      if (!(keyPart in resultPointer)) {        resultPointer[keyPart] = {};      }      resultPointer = resultPointer[keyPart];    })    resultPointer[last] = input[key];  })  return result;}

慕容708150

let str = '"or_11[and_3][gt@last_closed_sr]":"2019-06-18"';let first = str.replace(/"/g, '').match(/\w+/)[0];let pattern = /\[(.+?)\]/g;let matches = [];let match;while(match = pattern.exec(str)) {  matches.push(match[1])}let val = str.replace(/"/g, '').split(':')[1];let obj = {  [first]: {    [matches[0]]: {      [matches[1]]: val    }  }}console.log(obj)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript