前言:一般在使用API接口传输数据时通常会使用三种数据交换格式:JSON、XML、YAML
下面详细介绍一下这些数据交换格式:
一、JSON (JavaScript Object Notation)
JSON (JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript
(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON
成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
简单来说:JSON是一种轻量级的数据交换格式,结构清晰易于使用,相比XML重量级的数据交换格式更加的好用,所以大多数客户端和服务器端采用JSON的方式进行数据交换格式进行通讯。
JSON的数据结构如下:
{
"fruit": [
{
"name": "苹果",
"address": "烟台",
"price": "12.9",
"unit": "kg"
},
{
"name": "香蕉",
"address": "海南",
"price": "6.5",
"unit": "kg"
}
]
}
json数据格式以两种方式呈现:对象/数组。
以"{“开头,”}“结尾,”{}“包裹的为一个json对象,对象里面的值以key value格式存放。”[]"表示json数组,里面装载着若干json对象。
常用的JSON解析框架(推荐用jackson):
fastjson(阿里)、gson(谷歌)、jackson(SpringMVC自带)
二、XML (Extensible Markup Language)
可扩展标记语言,标准通用标记语言的子集,(Extensible Markup
Language,简称XML)。
是一种用于标记电子文件使其具有结构性的标记语言。主要作用是用来(描述)存储一些数据,或者说用来做配置文件使用,如spring项目就采用了xml文件。
使用xml要注意文件头部的结构,需要声明版本号,编码方式。xml中用标签的方式呈现,层层嵌套,可看做树形结构。
XML数据结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="1">
<name>小明</name>
<address>深圳</address>
<sex>1</sex>
</student>
... ...
</students>
XML的解析方式:
Dom4j、Sax、Pull,一般是这几种。
dom4j不适合大文件的解析,因为它是一下子将文件加载到内存中,所以有可能出现内存溢出。sax是基于事件来对xml进行解析的,所以他可以解析大文件的xml,也正是因为如此,所以dom4j可以对xml进行灵活的增删改查和导航,而sax没有这么强的灵活性,所以sax经常是用来解析大型xml文件,而要对xml文件进行一些灵活(crud)操作就用dom4j。
公司项目中解析xml我使用的dom4j,使用dom4j主要就是操作Document对象。创建SAXReader对象后通过对象读取文件,获取Document对象之后就很方便了,再获取根节点,即root节点,之后的操作就是一些迭代获取属性/文本之类的操作。
三、YAML (Yet Another Markup Language)
YAML是一种直观的能够被电脑识别的的数据序列化格式
以下是YAML数据的具体表现形式:
key:
child-key: value
child-key2: value2
YAML的适用范围:
a.由于实现简单,解析成本低,特别适合在脚本语言中使用
b.YAML比较适合做序列化。因为它是宿主语言数据类型直转的。
c.YAML做配置文件也不错。比如Ruby on Rails的配置就选用的YAML。
四、待补充: