从对象文字字符串创建对象

时间:2018-10-29 23:16:39

标签: javascript node.js

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

我正在寻找一个像下面这样的字符串:

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

放入类似的对象

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

注意:

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

2 个答案:

答案 0 :(得分:2)

eval确实可以工作,但有一点调整:问题是独立行

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

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

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

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

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

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

答案 1 :(得分:1)

虽然我永远不会执行此IRL,但您可以尝试以下操作:

var myObjLiteralString = '{ name: "A", list: [] }';

var myObj;
eval('myObj = ' + myObjLiteralString);

console.log(myObj);