Я знаю, как разобрать действительную строку JSON: JSON.parse('{"key" : "value"}')
.JS: как преобразовать строку в объект JS (** NOT ** в JSON)?
Но как насчет действительный объект JS, но недействительный JSON, например: JSON.parse("{ key : 'value'}")
? В приведенном выше примере броски:
Uncaught SyntaxError: Unexpected token k in JSON at position 2
Моя текущая цель еще сложнее. Я хочу, чтобы разобрать строку объекта JS содержащий RegEx (неподдерживаемый на JSON, но поддерживаемый JS) в объект JS:
'{ key1 : /val1/g , key2 : /val2/i }'
В конце концов я хочу использовать этот объект с Мангуста и найти документы с ним:
Model.find({
key1 : /val1/g ,
key2 : /val2/i
})
Я пытался применять довольно сложные регулярные выражения моей строки, заменяя /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 слишком мощный :) –