【问题标题】:Avoiding usage of JSON2 library in IE避免在 IE 中使用 JSON2 库
【发布时间】:2012-11-27 14:53:11
【问题描述】:

我应该在一个项目中为 IE 设置 JSON 格式的数据解析(专门),我知道 this library 但数据传输将是一个重大问题,我想尽量减少移动的字节量。

我将使用的 JSON 对象非常小而且非常扁平,用人类的术语最多可能有 30 行,最多 3 个深度级别。

有没有更好的方法来解决这个问题? RegEx 产生的问题往往比它解决的问题多。关于如何挑选连接到节点的值(或一组值)的任何其他想法,例如沙邦

我已经习惯了 C# 中的 XDocument 类,其中只需要指定后代的名称即可获取标签中包含的一堆信息。类似的解决方案将是可取的。 (老狗,新花样,呵呵。)

【问题讨论】:

    标签: javascript json internet-explorer parsing


    【解决方案1】:

    如果你可以保证数据是安全的,那么你可以使用eval或者Function构造函数来解析数据。

    这是因为 JSON 数据结构和值与 JavaScript 文字符号中的数据结构和值非常相似,因此您通常可以将数据评估为实际的 JavaScript 表达式。


    使用eval

    var parsed = eval("(" + myjsondata + ")");
    

    使用Function

    var parsed = (new Function("return " + myjsondata))();
    

    同样,这仅在您绝对确定所传递数据的完整性的情况下。因为您将其视为程序的一部分,所以任何替换有效数据的恶意代码都将被执行。

    Function 版本提供了一点点安全性,因为它是在全局范围内调用的,因此任何恶意代码都无法访问局部变量。总体而言,这应该不会带来什么舒适感。


    除了上述解决方案之外,您始终可以创建自己的序列化来满足您的数据需求。如果数据足够简单,它可以让您为自定义序列化编写一个非常短且快速的解析器。

    【讨论】:

    • 我试图在this discussion 上效仿@Sujay 的例子,但我似乎无法让它发挥作用(他对神秘变量名称的使用让我的头发走了再见,再见,哈哈)。至于数据源 - 是的 我 100% 确定它是可靠的。如果不是 - 你好诉讼他们大时间。 :)
    • @KonradViltersten:您需要询问 Sujay,但如果保证数据安全,那么我会使用上述其中一种。
    • 是的。它就像一个魅力。我需要在星期五之前展示一些有效的东西,所以我会去的。一个更精细的解析器,如果需要,我可以稍后开发。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 2014-09-06
    • 2011-04-27
    • 2015-04-16
    • 2016-12-02
    • 2013-02-26
    • 1970-01-01
    相关资源
    最近更新 更多