【发布时间】:2010-01-02 21:36:37
【问题描述】:
我开始创建一个将与公共 API 交互的 iPhone 应用程序。
我的问题是,哪个会更快和/或更容易使用:XML 还是 JSON?
【问题讨论】:
我开始创建一个将与公共 API 交互的 iPhone 应用程序。
我的问题是,哪个会更快和/或更容易使用:XML 还是 JSON?
【问题讨论】:
根据Sam Soffes,TouchJSON 优于 XML 属性列表:
当我准备我的演讲时,我决定做一些基准测试来展示 plist 比 JSON 更棒的程度。 plist 版本比我的 JSON 框架版本快大约 8 倍。我对这个结果很满意。我的朋友 Jake 说他在他的应用程序中使用 TouchJSON 来解析 JSON,所以我想我也应该继续做基准测试。我期待 JSON 框架能够击败它,因为 JSON 框架的接口比 TouchJSON 的接口简单得多。
我的发现非常令人惊讶。 TouchJSON 实际上击败了 plist。在我运行的每个测试中,它都稍微快一点。这太棒了,因为 plist 的文件大小要大得多。由于所有额外的标记,它们通常大约是 JSON 文件的两倍。
但是,这是一个单一的数据点。
【讨论】:
就内置 API 而言,据我所知,没有对 JSON 的原生支持,因此如果您不想使用外部库,XML 将是唯一的选择。
也就是说,JSON 往往更容易使用,因为它直接合成到 Cocoa 对象(即 NSDictionary、NSArray、NSString、NSNumber)中,所以如果你愿意,我会说 JSON 更容易使用使用外部库,并且您对 JSON 有良好的服务器端支持。我在json-framework 库上运气不错,所以我的建议是尝试一下。
JSON 的另一个好处是,由于它的格式,它通常(几乎总是)会在网络上产生更小的文件传输大小。虽然节省了几 kb 可能会被忽略,但对于在蜂窝网络上带宽有限的移动设备来说,这是一个重大胜利。
【讨论】:
用这么少的信息无法判断。这取决于处理该数据形式的两端库的质量和功能。
但是您已经知道 JSON 会更加紧凑,因为它不必处理结束标签(变量和开放标签对我来说似乎是一种洗礼)。 JSON 线路上的字节更少。
【讨论】:
JSON 非常简洁,可以节省带宽并提高处理效率,所以我会选择它。
【讨论】:
我也会使用 JSON 和 TouchJSON(如前所述)。在我自己的测试中,有效负载更小,解析更快。哦,顺便说一句,不要使用 NSXMLParser,它真的很慢。请改用 libxml2 或 TouchXML。查看这篇关于 iPhone 上 JSON 的直接体验的文章:
另一种可能的方法是生成 XML 或二进制属性列表,然后将其反序列化为本机对象。您的服务器端应用程序可能会使用 Python 上的 plistlib 或 Ruby 上的 plist 为您生成 plist 格式。
【讨论】: