使用JSON与XML相比,有什么特殊优势在Flash中使用?

5

好的,有吗?

从我所读的所有内容来看,似乎答案是否定的,但我想知道是否有不同的看法。

4个回答

5

JSON通常比XML更高效的数据编码方法。如果下载时间对您的应用程序很重要,这将很重要。

另一个考虑因素是E4X查询语法是否具有令人信服的优势。也许您可以通过迭代单个查询行的结果来实现所需功能,而在解析JSON时,相应的ActionScript代码会更长。

我还会考虑此应用程序是否必须与JavaScript代码交互,例如,因为Flash应用程序位于浏览器中并且必须与页面上的其他内容通信。如果是这样,我会选择JSON,因为在浏览器JS中处理XML(而不是使用E4X的现代JS 1.8)比处理JSON困难得多。


2

XML是一堆数据。它90%是超文本,10%是数据。

JSON在这里有两个主要优势:

  1. 它更小。这意味着将使用更少的带宽(响应时间更快,非常适合AJAX)
  2. 它是JavaScript的子集,这意味着解析它只需要调用eval()函数,例如:

    result = eval(resultStr); var age = result.clients[2].age;

我强烈推荐使用JSON。


5
使用eval()解析JSON存在安全风险。只有在确定可以信任数据源时才能这样做。否则,它会为其他人向你的应用程序注入代码提供一种途径。孩子们,你能说出跨站脚本攻击吗?我知道你能。 - Warren Young

2

另一个主要优势是解析速度。使用 E4X 解析大量的 XML 数据非常缓慢,尤其在移动设备上更为明显。我曾经观察到,使用 JSON 代替 XML 来表示相同的数据,速度提高了约 10 倍。在这种情况下,数据大小为 1.5 MB(压缩后)。


1

JSON 意味着 JavaScript 对象表示法... JSON 的明显优势在于,它捕获了 ECMAScript(包括 ActionScript)的对象语义... E4X 在某种程度上有助于使 XML 对象在 ActionScript 中感觉良好,但仍然存在问题...

如果我有 <node attribute="value"><child/><node>,我无法真正说出它是什么... child 是属性吗?它是长度为一的数组条目吗?我将如何评估节点名称 node

JSON 字符串表示匿名 actionscript 对象... XML 不是这样的...

除此之外,还有已经提到的优点:它更小、更轻量级... JSON 的一个明显优势是,它可以捕获数字和布尔值... 这对于 XML 来说并非如此... attrib="123" 可能意味着字符串 123 或整数 123... 对于 truefalsenull 也是同样的情况...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接