javascript - 获取字符串中对象的内容

标签 javascript

我有这个字符串:

const test = `
{
  "name": "Error",
}

{
  "name": "Signup Success",
  "status": "400",
  "body": {
     "name": {
        "first": "test",
      },
      "roles": [
       "user"
      ],
      "isMale": true,
  }
}
`

如何分别获取两个对象中的内容。就像第一个对象包含 "name": "Error" 而第二个对象包含:

  "name": "Signup Success",
  "status": "400",
  "body": {
     "name": {
        "first": "test",
      },
      "roles": [
       "user"
      ],
      "isMale": true,
  }

最佳答案

你可以构建一个解析器:

const test = `
{
  "name": "Error",
}

{
  "name": "Signup Success",
  "status": "400",
  "body": {
     "name": {
        "first": "test",
      },
      "roles": [
       "user"
      ],
      "isMale": true,
  }
}
`;

const addCommas = str => {
  const charactersArray = Array.from(str.replace(/\s/g, ''));
  charactersArray.reduce((acc, curr, index, self) => {
    if (curr === '{') acc++;
    if (curr === '}') acc--;
    if (acc === 0 && curr === '}') self[index] = '},';
    return acc;
  }, 0);
  return charactersArray.join('').replace(/,\}/g, '}').replace(/,$/, '');
};

const parsedObject = JSON.parse('['+addCommas(test)+']');

parsedObject.forEach((el, i) => {
  console.log(`Element ${i+1} name: ${el.name}`);
});

这是 100% 安全的,因为 "}{" 字符串也不会导致问题

关于javascript - 获取字符串中对象的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55279073/

相关文章:

JavaScript 对象 : find a key/value when in range

javascript - 如何在 javascript 中验证和限制数字数据的 asp.net 文本框控件的长度?

javascript - 如何从 Reducer 中删除条目/如何返回新状态? ( react /减少)

javascript - Aframe 每隔一段时间就会改变天空

javascript - Visual Studio 2010 文件打开 - 说它已经打开!

javascript - jQuery 只显示数组的最后一个元素

javascript - 从下拉列表中动态选择值

javascript - Angular.js 两个嵌套 Controller 之间的双向数据绑定(bind)

javascript - 如何遍历HTML并将其转换为对象数组?

javascript - Socket.io 在连接事件上调用 ack