我知道如何解析一个有效的JSON字符串:JSON.parse('{"key" : "value"}')
。
但对于一个有效的JS对象,但无效的JSON,例如:JSON.parse("{ key : 'value'}")
?
上面的例子会抛出:
Uncaught SyntaxError: Unexpected token k in JSON at position 2
我的真正目标甚至更加棘手。我想将一个包含正则表达式(JSON不支持但JS支持)的JS对象字符串解析成JS对象:
'{ key1 : /val1/g , key2 : /val2/i }'
我最终希望将这个对象与Mongoose一起使用,并使用它查找文档:
Model.find({
key1 : /val1/g ,
key2 : /val2/i
})
我尝试对字符串应用了一个相当复杂的正则表达式,将/val1/g
替换为new RegEx("val1","i")
:
str = str.replace( /\/(.+?)\/(g?i?).+?(?=,|})/g , "new RegExp(`$1`,`$2`)" )
< p > .replace()
操作能够按照我想要的方式修改字符串。它会产生以下结果:
{ key1 : new RegExp("val1","g") , key2 : new RegExp("val2","i") }
但是当我尝试使用JSON.parse
解析它时,仍然失败,因为new RegEx("val1","i")
不是一个有效的值。
eval
是你要找的东西? - Emile Bergeron