避免在IE中使用JSON2库

时间:2012-11-27 14:53:11

标签: javascript json internet-explorer parsing

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

我将消耗的JSON对象非常小而且相当平坦,人类术语最多可能有30行,最多3个深度。

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

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

1 个答案:

答案 0 :(得分:1)

如果可以保证数据是安全的,那么您可以使用evalFunction构造函数来解析数据。

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


使用eval

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

使用Function

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

同样,只有当您完全确定传递的数据的完整性时,才会这样做。因为您将其视为程序的一部分,所以将执行替代有效数据的任何恶意代码。

Function版本提供了一点安全性,因为它在全局范围内调用,因此任何恶意代码都无法访问本地变量。这应该总体上不太舒服。


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