一、什么是数据交换格式
在计算机的不同程序之间,或者不同的编程语言之间进行交换数据,也需要一种大家都能听得懂得‘语言’,这就是数据交换格式,它通过文本以特定的形式来进行描述数据。
二、常用的几种数据交换格式
客户端常用的数据交换格式有xml、json、yaml。
1、JSON(JavaScript Object Notation)
JSON是一种轻量级的文本数据交换格式,在语法上与创建JavaScript对象的代码相同,由key|value(键|值)构成。
JSON的格式:
a:数据在名称|值对中
b.数据由逗号分隔
c.大括号保存对象
d.中括号保存数组
{
"dates": {
"date": [
{
"id": "1",
"name": "JSON",
"abb": "JavaScript Object Notation"
},
{
"id": "2",
"name": "XML",
"abb": "eXtensible Markup Language"
},
{
"id": "3",
"name": "YAML",
"abb": "Yet Another Markup Language"
}
]
}
JSON的优点:
a.具有自我描述性,易于阅读编写,也易于机器解析与生成
b.使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON
c.非常适用于服务器与JavaScript交互
使用JSON:
a.读取JSON字符串
b.用eval()或者parse()处理字符串
2.XML(eXtensible Markup Language)
可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
XML的格式:
a.声明:定义XML文件版本以及字符集
b.根标签:树形结构的根节点
c.子元素:相对上一级而言,可以自定义,必须有结束标签,对大小写敏感
d.属性:一个元素可以拥有多个名字不同的属性
<?xml version="1.0" encoding="UTF-8" ?>
<dates>
<date>
<id>1</id>
<name>JSON</name>
<abb>JavaScript Object Notation</abb>
</date>
<date>
<id>2</id>
<name>XML</name>
<abb>eXtensible Markup Language</abb>
</date>
<date>
<id>3</id>
<name>YAML</name>
<abb>Yet Another Markup Language</abb>
</date>
</dates>
使用XML:
a.读取XML文档
b.使用XML DOM循环遍历文档
c.读取值并存储变量
3、YAML(Yet Another Markup Language)
YAML是一种直观的能够被电脑识别的的数据序列化格式
YAML的格式:
a.结构用缩进表示
b.连续项目用‘-’表示
c.key|value用‘:’分隔
dates:
date:
-
id: 1
name: JSON
abb: "JavaScript Object Notation"
-
id: 2
name: XML
abb: "eXtensible Markup Language"
-
id: 3
name: YAML
abb: "Yet Another Markup Language"
YAML的适用范围:
a.由于实现简单,解析成本低,特别适合在脚本语言中使用
b.YAML比较适合做序列化。因为它是宿主语言数据类型直转的。
c.YAML做配置文件也不错。比如Ruby on Rails的配置就选用的YAML。
YAML的问题:
由于兼容性问题,不同语言间的数据流转,建议不要用YAML!!!
还有一种表达方式是CSV(逗号分隔符),使用表格和分隔符来表示数据的格式,本文就不在多加叙述,有兴趣的读者可以自己去了解一下。本文列出的三者相较而言,JSON与XML使用的更加广泛一点。并且JSON和XML从实现方法比较而言,不难看出,JSON比XML更快更易使用,个人更加推崇JSON一点。当然,具体情况还得具体分析,合理的使用这些数据交换格式,我们才能够写出更加优秀、强大的代码!
4、CSV(Comma Separated Values)
CSV文件是一种纯文本文件,用于存储表格和电子表格信息。内容通常是由文本、数字或日期组成的表格。使用将数据存储在表中的程序可以轻松导入和导出CSV文件。
CSV的格式:
通常CSV文件的第一行包含表格列标签。后面的每一行表示表中的一行。逗号分隔行中的每个单元格,这就是名称的来源。