我问莫老师,你知道互联网产品都有哪些常见的数据格式吗?
莫老师问,你是说 Excel 吗?
答得不全对,但对于大多数普通用户来说,这已经是个相当不错的答案了。Excel 是微软 Office 套件中的一款电子表格产品,由于它的(盗版)普及率实在太高了,以致于很多人想到数据,首先就想到了 Excel。如果微软的 Office 今天是个刚刚推向市场的产品,大概也可能会使用一种滥大街的广告格式:Excel 就是数据软件。
我想说的重点不是 Excel,而是表格(Excel 只是表格型数据的一种形式)。表格是一种最直观的数据格式,由横纵交叉的线条将平面空间分成若干行若干列的整齐风格,每个格子中可以填写一些数据。比如这样:
你看,这就是数据。通常的表格数据,如果是在线版,会用 HTML 的 table 标签展示,如果是离线版,一般用 CSV 格式的文件存储。先说 table。
表格
表格是肉眼能够识别的最直观的数据格式。
HTML 中的 table 是这样的结构:
<table>
<thead>
<tr>
<th>Head1</th>
<th>Head2</th>
</tr>
</thead>
<tbody>
<tr>
<td>Value1</td>
<td>Value2</td>
</tr>
<tr>
<td>Value3</td>
<td>Value4</td>
</tr>
</tbody>
</table>
上面的代码翻译过来是这个样子:
Head1 | Head2 |
---|---|
Value1 | Value2 |
Value3 | Value4 |
Table 是 Web 前端使用最广泛的数据表达方式。大多数你在网上看到的表格形式的数据,都是用 Table 书写的。Table 也非常好用,你把一个网页上的表格从头到尾选中再复制,多数情况下都可以原样粘贴到 Excel 里。
CSV
CSV 是 Comma Separated Value 的简写,它是一种通用的格式(当我们说通用时,一般指的的兼容性,比如跨平台、跨软件,在任何操作系统上,用任何的表格软件都可以轻松打开)。
任何表格,本质上都是二维矩阵,如果不考虑单元格合并的话,一般都能够用 CSV 文件等价表示,这也是为什么许多数据产品支持的导出格式中都有 CSV 的原因。我们手写一个 CSV 试试:
a,b,c)))
d,e,f
h,i,j
这个 CSV 文件用 Excel 等工具打开时会看到这样:
a | b | C |
---|---|---|
d | e | f |
h | i | j |
当然 CSV 在使用中有很多局限。比如,CSV 使用了英文逗号作分隔符,那单元格内容中有英文逗号怎么办?于是有人想到,用英文双引号把单元格内容括起来。像这样:
"a,a","b","c"
...
但还是有问题,万一单元格内容中有双引号怎么办?于是又有人想到了转义,也有人想到了换个分隔符,比如 \t
。但无论怎么转,单元格内的内容总有可能和分隔符冲突,所以这并不是一种非常完美的解决方案。很多互联网产品在导出 CSV 数据时,由于顾虑不周,经常会出现乱码或者串行的情况。
CSV 被看作是最标准最工整的格式,有成熟的处理方式、成熟的标准、成熟的软件支持。如果有人拿着 CSV 文件说做大数据分析,建议你呸它一脸,要是能处理成 CSV 这么工整的格式,基本上就算不上大数据了。
XML
与 CSV 类似的格式,有一种叫 XML。XML 是 Extensible Markup Language 的缩写,指的是一种可扩展的标记语言。如果不知道 XML,你可能知道跟它类似的一种标记语言叫 HTML,它们都是用尖角标签把内容包裹起来。XML 大致长这个样子:
XML 也是一种常用的数据格式,比如上边这张图就是 RSS 的格式,本质上就是一个 XML 文件。再比如 iTunes 播客的数据格式、微信公众号的自动回复的数据格式、SEO 中向搜索引擎提交网址的数据格式,都是 XML。
JSON
这些年来前后端分离的产品越来越多,很多产品都有了 RESTful API 设计,这样一来,JSON 就越来越重要。
JSON 是 JavaScript Object Notation 的缩写,可以理解成用 Javascript 的对象来表示一个数据。JSON 看起来是这样的:
[{
"car": "BMW",
"meta": {
"price": 40000,
"color": "blue"
}
}, {
"car": "Benz",
"meta": {
"price": 35000,
"color": "black"
}
}, {
"car": "三蹦子",
"meta": {
"price": 6000,
"color": "green"
}
}]
JSON 是如今无处不见的数据格式(常见于前后端分享的设计,特别是移动端)。相比 CSV,它的功能更强大,更容易扩展。
小结
本文从 Excel 说起,讲了互联网产品常见的几种数据交换格式,包括直观可见的互联网表格、用 Excel 可以直接打开的 CSV、更像 HTML 的 XML、以及前后端分离的 API 数据格式 JSON,最后,我们留下一个小线索,供大家了解更多。
本来只想随便说几种数据格式,但说着说着,似乎到了数据交换格式的领域。
维基百科上把 Data exchange formats 分成两种类型,一种是人类可读的,一种是人类不可读的(计算机可读的二进制格式)。前边我们说到的几种类型,以人类可读为主。
这张表格把几种数据格式作了一下比较。
https://en.wikipedia.org/wiki/Data_exchange
获取更多数据及服务咨询,请关注微信公众号 toobigdata