2015-04-02 46 views
0

我很新的编程,所以我很抱歉,如果我的问题的答案是显而易见的:JSON - 重量轻?

我需要在MySQL和iOS应用程序之间传递数据。我使用PHP作为之间的。通过php获取的查询结果我只是传递给我的应用程序,以逗号分隔/新行分隔(新列为逗号,新行为新行)。

我一直在阅读关于JSON的内容,我已阅读(stackoverflow question on why json及其相关链接),试图找出为什么我会将我的php输出转换为JSON格式,然后反序列化?在我的应用程序方面。我一直在阅读JSON是如何轻量级重量等,但当我看着它,似乎最终会发送更多的数据。

ex。如果我发送一些车辆数据:

JSON for 2 vehicles: [{type:'car',wheeles:4,wings:'no'},{type:'plane',wheeles:24,wings : '是'}]

在CSV

同一信息: 车,4,没有[/ N] 飞机,24日,是

当然也有在CSV没有头,但我知道,信息会以类型,轮子,翅膀的形式发送,我会认为发送的总位数会更多。

我的问题是: 1.会发送CSV比JSON字符串更快(我认为答案是肯定的,但希望听到专家) 2.鉴于速度更快,我知道为了数据进来,是否有任何理由我仍然应该选择JSON over CSV(某些形式的数据健壮性,如JSON vs. CSV或其他)?

+2

这些标准化格式的存在是有原因的。如果您尝试将新行或逗号作为数据的一部分发送,系统将中断。 – jeroen 2015-04-02 08:12:33

+1

@ jeroen:可以肯定的是,正确的CSV(与自制的“split”解决方案相反)也具有处理换行符,逗号和引号的方法。然而,最主要的是:CSV代表一个表(具有固定结构)和JSON树(具有异构结构)。 CSV中不能有两种数据。它是标准的,现在几乎所有的东西都支持(而正确的CSV不是)。当你看到随机的JSON时,它很明显是什么,但是当你看到随机的CSV时,你必须知道它代表了什么。 – Amadan 2015-04-02 08:16:34

+0

@Amadan是的,肯定有更多的:-) – jeroen 2015-04-02 08:17:41

回答

2

会发送CSV比JSON字符串(我认为答案是肯定的,但想从专业人士那里听到)

考虑到特定的数据结构,速度快:是的,但它是不太可能会快得多。特别是如果您在HTTP级别使用gzip压缩。

如果分析显示传输时间是造成显着减速的原因(不太可能!),那么您总是可以发送数据数组而不是对象。

鉴于速度更快,我知道数据进入的顺序,是否有任何理由我仍然应该选择JSON over CSV(某些形式的数据健壮性,如JSON vs. CSV或其他) ?

  • JSON已正确标准化。 CSV不是(有一些常见的约定,它大部分可以可靠地解码,但边缘情况可能有问题)。
  • JSON编码器和解码器广泛可用,并且彼此高度兼容。
  • 基于JSON的格式在某种程度上可以自我记录,这使得维护处理它的代码更容易。