当前位置: 首页 > 面试题库 >

JavaScript eval()的替代品,用于解析JSON

颜新
2023-03-14
问题内容

快速提问。JavaScript中的Eval是不安全的吗?我有一个JSON对象作为字符串,我需要将其转换为实际对象,以便获取数据:

function PopulateSeriesFields(result) 
{
    data = eval('(' + result + ')');
    var myFakeExample = data.exampleType
}

如果有帮助,我正在使用jQuery的$ .ajax方法

谢谢


问题答案:

好吧,不管是否安全,当您使用jQuery时,最好使用$
.getJSON()
方法,而不是$ .ajax():

$.getJSON(url, function(data){
    alert(data.exampleType);
});

eval()
当您仅与自己的服务器通信时,通常被认为是安全的JSON解析,尤其是当您在服务器端使用良好的JSON库以保证生成的JSON不会包含任何讨厌的东西时。

甚至JSON的作者Douglas
Crockford都说eval(),除了解析JSON外,您不应在代码中的任何地方使用。参见他的书《JavaScript:优秀的部分》中的相应部分



 类似资料:
  • 我有一个需求,我必须设计一个通过xml控制代码执行流的设计。这是一种状态机,我必须在状态之间移动。大约5年前,我在JBPM 4上使用过JPDL xml。但在最新的JBPM版本中,JPDL似乎不再可用。 基本上我想要像下面这样的东西,(只是基于JPDL建模) 使用JBPM和JPDL可以轻松完成上述操作,但在最新的JBPM中,如果没有JPDL,我不确定如何做到这一点。状态之间的转换基于Java类输出(

  • 问题内容: 问题 在解决这个问题之后,似乎基于文件或磁盘的实现可能是解决我在此处提到的问题的正确解决方案。精简版: 目前,我已将实施为。 条目以相当固定的速率连续添加到其中。稍后对此进行详细说明。 最终,无论如何,这意味着JVM耗尽了堆空间。 在工作中,(强烈)建议我使用SQLite解决此问题,但是在问了上一个问题之后,我认为数据库不是适合此工作的合适工具。所以- 让我知道这听起来是否疯狂 -我认

  • Jackson框架提供了基于注释的方法来在序列化过程中发出类型信息。 我不想在我的超级类(Animal)中使用@JsonSubTypes注释。 相反,我想告诉我的子类,即狗和大象,动物是它们的父母。 有没有任何方法可以在不使用动物类中的注释的情况下做到这一点。 如果是,请提供示例,如果可能的话,也可以这样做。 下面是我试图解决的问题。“test”接收的JSON包含“type”字段,如“dog”或“

  • 我想实现达特-原型,但是达特-原型-插件(从原型定义生成达特原型库的项目)目前不支持视窗。我找不到插件的替代方案。没有其他方法来生成达特的定义吗?任何建议表示赞赏。

  • 问题内容: 如何解析该JSON: 使用Jackson或其他方法进入该类: 期望类似: 问题答案: 注意: 我是 EclipseLink JAXB(MOXy)的 负责人,并且是 JAXB(JSR-222) 专家组的成员。 Jackson可能无法使用此用例,但是当将MOXy用作JSON绑定提供程序时可以完成此用例。 oo 您可以在此用例中利用MOXy基于路径的映射。 演示版 JAXB运行时API用于读

  • 问题内容: 另一种选择是允许我填写带有复选框和单选按钮的HTML表单。 我正在创建一个需要用户输入的Android应用程序,并将该数据使用html表单发送到网站,然后将其填写,提交表单并返回以下结果页面。 我已经设法在eclipse中使用HtmlUnit库将数据发送到html表单并检索页面(我在下面发布了Java代码)。 但是,当我将该代码复制到我的Android项目中时,我发现Android不支