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