首页 > 解决方案 > 从对象文字字符串创建对象

问题描述

有没有一种简单的方法可以将对象文字作为字符串解析为新对象?

我正在寻找如下所示的字符串:

'{ name: "A", list: [] }'

进入像这样的对象:

{ name: 'A', list: [] }

笔记:

我不是在寻找,JSON.parse()因为它接受 json 字符串而不是对象文字字符串。我希望这eval会奏效,但不幸的是它没有。

标签: javascriptnode.js

解决方案


eval确实有效,只需稍作调整:问题在于独立生产线

{ name: 'A', list: [] }

被解析为解释器作为块的开始,而不是作为对象字面量的开始。因此,就像隐式返回对象的箭头函数需要在对象周围加上括号:

arr.map(item => ({ item }))

您需要在输入字符串周围加上括号,以便将其中的内容(即以 开头的对象{)正确解析为表达式:

const input = '{ name: "A", list: [] }';
const obj = eval('(' + input + ')');
console.log(obj);

当然,与所有eval涉及的情况一样,您首先应该非常确定输入是值得信赖的。


推荐阅读