将字符串表达式转换为JS对象(不是JSON)



在可满足内容的div中有这样一个表达式:

{
name : "Jeff",
job : "rat whacker"
}

我如何把它变成一个JS对象?

如果我从div中获取字符串:

$("div").text();

…我得到这个:

"{n    name: "Jeff",n    job: "rat whacker"n}"

显然JSON。parse将不起作用,因为这不是有效的JSON。如何将其作为文本获取,然后将其分配给常规JSON对象:

{
name : "Jeff",
job : "rat whacker"
}

注意,你最不应该做的就是信任别人。如果你允许任意代码执行,有人就会滥用你的网站,所以要避免这种情况:在允许用户输入进入下一步之前,编写验证用户输入的代码。

要么采取textContent从你的div,重写它,使它是有效的JSON,然后解析JSON(奖金:如果输入不能被解析,JSON.parse会自动抛出一个错误,所以你可以编写一个非常简单的字符串替换,适用于你想要的输入类型,同时为其他任何东西产生坏的JSON,JSON.parse函数将拒绝坏的输入),或者从字面上解析文本字符串作为JS,使用JS解析器设置为丢弃任何活动内容(function,胖箭头符号,执行操作符等)。如果您只想允许像您所显示的这样的简单输入,那么编写自己的简单和有限的js解析器是一点工作,但可能已经足够了。

相关内容

  • 没有找到相关文章

最新更新