如何在javascript中解析javascript对象字符串

How to parse javascript object string in javascript?

本文关键字:javascript 对象 字符串      更新时间:2023-09-26

我有一个对象的字符串表示,在模板字符串中,像这样

const obj = `
{
  namespace: 'ignored',
  state: {}
}
`

现在我想把它解析成一个对象,但是JSON.parse抛出了一个错误。

JSON.parse(obj)
//=> Uncaught SyntaxError: Unexpected token n in JSON at position 13(…)

这是因为JSON.parse期望这样的json字符串

const obj = `
{
  "namespace": "ignored",
  "state": {}
}
`

现在,我不能手动更改我的obj对象,因为这是一个用户输入,可以更复杂的方式。那么,有什么方法来解析它吗?在使用JSON之前。用正则表达式,或者比json。parse更好的方法?

你可以做几件事。

    使用正确的解析器。
  • 使用eval()

对于大多数应用程序,特别是如果有任何用户输入,最终将在其他用户的计算机上,eval()是一个糟糕的主意。可能只对一次性脚本或类似脚本有用。

对于解析,定义其输入语法,将其解析为树结构,然后直接创建所需的JavaScript对象。因为它看起来像实际的JavaScript代码,所以您可以使用现有的解析器,这样会容易得多。