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