首页 > 解决方案 > 如何正确评估包含带有特殊字符的 JSON.parse 表达式的 Javascript 字符串?

问题描述

我需要评估以下列方式创建的 JS 表达式

function createExprs(obj){
   var decl = "var i = ";
   var value = JSON.stringify(obj);
   var exprs = decl + "JSON.parse('" + value + "')";
   return exprs;
}

var i = createExprs({1:2});//i = "var i = JSON.parse('{"1":4}')"
eval(i); // works fine 

但是,当 obj 包含任何特殊字符时它会失败

var i = createExprs("today\\.article") \\i="var i = JSON.parse('"today\\.article"')"
eval(i) //  Unexpected token . in JSON 

标签: javascriptjsoneval

解决方案


你需要逃避"

"var i = JSON.parse('\"today.article\"')"

推荐阅读