使用vanilla JS

时间:2018-01-06 23:34:19

标签: javascript

我正在尝试解析嵌套的字符串对象以返回一个对象。

例如,给定一个字符串:

'{dog : cat, joe: { jane: cat, peanut : dog }, fat : skinny}'

我想将其转换为对象数据类型,因此返回值为:

{dog : cat, joe: { jane: cat, peanut : dog }, fat : skinny}
到目前为止

代码:

function Parse(string) {
  if (string[0] == '{' && string[string.length - 1] == '}') {
    const inObj = string.substring(1, string.length - 1);
    const arr = inObj.split(',');
    const keyVal = arr.map(c => c.split(':'));

    const obj = {};
    for (var i = 0; i < keyVal.length; i++) {
      let ele = keyVal[i];
      if (ele[1].startsWith('{')) {
        let string2 = ele[1];

        for (var j = i + 1; i < keyVal.length; i++) {
          console.log(keyVal[j]);
          if (keyVal[j].endsWith('}')) {
            string2 += keyVal[j];
            break;
          } else {
            string2 += keyVal[j];
          }
        }
        obj[ele[0]] = JSONParser(string2);
      } else {
        obj[ele[0]] = ele[1];
      }
    }
    return obj;
  }
}

我的逻辑流程,粗略地说:

  1. 如果字符串以{开头,它将开始解析。
  2. 创建一个子字符串,可以在{}
  3. 之间获取所有内容
  4. 将字符串拆分为具有分隔符,
  5. 的数组
  6. 将每个元素(每个元素应该是键值对字符串)放入子数组中,将键和值拆分为子数组。所以它应该是[[key,value],[key,value]];
  7. 问题:该值可以是另一个对象。
  8. 尝试迭代[[key,value],[key,value]]
  9. 如果value == '{'然后开始为它创建一个字符串
  10. 字符串首先是值。
  11. [[key,value],[key,value]]开始迭代 { + 1索引的元素值。
  12. 添加到字符串,直到元素结束}
  13. 应该以嵌套对象字符串结束。
  14. 递归使用 我们的JSONParse来解析对象。
  15. 如果有人可以帮助他们解析对象或者纠正我当前的逻辑,我将非常感激。

0 个答案:

没有答案