如何将字符串解析为javascript对象?

时间:2018-07-27 00:51:12

标签: javascript json

我在字符串变量中定义了一个javascript对象:

const str = "{a:1}";

我想知道将其转换为javascript对象的最佳方法是什么。我进行了很多搜索,但发现的所有内容都是使用JSON.parseJSON.stringify来转换字符串。但是此字符串中的棘手部分是它不是JSON对象。 a未引用。我已经尝试过以下方法,但是它不会将其解析为对象:

JSON.parse(JSON.stringify(str))

我知道我可以手动解析字符串,但是我正在寻找一种更通用的解决方案,该支持解析所有可能的javascript对象字符串。

1 个答案:

答案 0 :(得分:0)

var obj = eval(str);

请注意,使用eval会对性能和安全性产生影响。

如果您不控制str的内容,即它是用户输入或来自您不信任的服务器,则存在风险。

此外,JavaScript运行时会在运行时优化代码,但在设计eval时通常会禁用许多优化。

尝试将评估语句包装在一个自定义函数中,该函数接收传递给eval的变量:

(function(s) {
    return eval(s);
}(str));

它可以确保创建一个闭包来隔离eval,从而减​​轻其潜在影响。

最后,请不要接受我刚才所说的任何事情,这是绝对的真理:请确定是否使用eval对代码进行基准测试。