【发布时间】:2016-07-26 16:09:58
【问题描述】:
我知道如何解析有效的 JSON 字符串:JSON.parse('{"key" : "value"}')。
但是 有效的 JS 对象,但无效的 JSON 呢,例如:JSON.parse("{ key : 'value'}")?
上面的例子抛出:
未捕获的 SyntaxError:JSON 中位置 2 的意外标记 k
我的实际目标更加棘手。我想将一个JS对象的字符串包含RegEx(JSON不支持但JS支持)解析成一个JS对象:
'{ key1 : /val1/g , key2 : /val2/i }'
我最终想将此对象与 Mongoose 一起使用并使用它查找文档:
Model.find({
key1 : /val1/g ,
key2 : /val2/i
})
我尝试将一个相当复杂的 RegEx 应用于我的字符串,将 /val1/g 替换为 new RegEx("val1","i") :
str = str.replace( /\/(.+?)\/(g?i?).+?(?=,|})/g , "new RegExp(`$1`,`$2`)" )
.replace() 操作按我想要的方式工作并修改字符串。它产生:
{ key1 : new RegExp("val1","g") , key2 : new RegExp("val2","i") }
但是当我尝试对其应用JSON.parse 时,它仍然失败,因为new RegEx("val1","i") 不是有效值。
【问题讨论】:
-
我讨厌自己这么说,但也许
eval是你要找的? -
谢谢,确实是这样,我没想到。 eval 太强大了:)
标签: javascript json string parsing object