数据交换格式
当前比较流行的几种数据交换格式
主要包括以下三种:
· XML
· JSON
· YAML
XML
XML是当前编程中最为流行的数据交换格式,拥有跨平台、跨语言的优势。对于XML应该很熟悉,所以不再多做介绍。
JSON
什么是JSON?
· JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式;
· 它是基于JavaScript的一个子集;
JSON的有优点?
· 易于人阅读和编写。同时也易于机器解析和生成;
· 同XML或HTML片段相比,JSON提供了更好的简单性和灵活性;在Javascript地盘内,JSON毕竟是主场作战,其优势当然要远远优越于xml;
· 非常适合于服务器与JavaScript 的交互;
JSON数据的数据格式
JSON数据格式非常简单,简单来说,只有四点:
1)并列数据之间用逗号(,)分隔;
2)映射用冒号(:)表示;
3)并列数据的集合用方括号([])表示;
4)映射的集合用大括号({})表示。
上面4条规则就是JSON的所有内容。
JSON的数据表示
和XML一样,JSON也是基于纯文本的数据格式。由于JSON天生是为JavaScript准备的,因此,JSON的数据格式非常简单,您可以用 JSON传输一个简单的String,Number,Boolean,也可以传输一个数组,或者一个复杂的Object 对象。
1)字符串格式:和大多数编程语言一样,引号之内就可以定义字符串;
2)数字格式:
3)Boolean数据类型;表示为true和false;
4)Object对象:JSON中使用{}包含一系列无序的key-value键值对表示Object对象;
JSON数据处理原理
JSON的数据处理原理的步骤如下:
1)客户端发送数据到服务器端,服务器端响应用户请求返回数据,此时可以将服务器端的数据封装成为JSON传送到Web页面;在Java开发服务器端通常用以下几个方法将后台得到的数据封装成为JSON数据,如下:
/**
* 将字符串类型的数据转换为JSON格式的数据输出
*/
public void outJsonString(String str) {
getResponse().setContentType("text/javascript;charset=UTF-8");
outString(str);
}
/**
* 将Object类型的数据类型转换为JSON格式数据输出
*/
public void outJson(Object obj)
{
outJsonString(JSONObject.fromObject(obj).toString());
}
/**
* 将Object类型的对象转化为JSON数组的格式输出
*/
public void outJsonArray(Object array)
{
outJsonArray(JSONArray.fromObject(array).toString());
}
2)服务器把封装好的JSON数据发送到客户端页面,该数据是一段JSON格式的数据,如下:
如果想在页面中看到服务器端返回的JSON数据,利用以下的Javascript代码可以将数据显示到客户端页面:
实际上Javascript是将服务器端返回的JSON数据赋值给一个JS变量,将JS变量输出即可在页面中显示服务器端返回的数据。
YAML
什么是YAML?
·YAML是一种直观的能够被电脑识别的的数据数据序列化格式;
· 换种说法,YAML是一种很简单的类似于XML的数据描述语言,语法比XML简单很多。
YAML试图用一种比XML更敏捷的方式,来完成XML所完成的任务。但YAML不是XML。
YAML的优点?
· 可读性好;
· 和其它脚本语言的交互性好;
· 使用实现语言的数据类型;
· 提供了一个一致的信息模型;
· 可以基于流来处理;
· 表达能力强,扩展性好;
· 易于实现;
YAML语法?
在YAML里面,
· 结构通过缩进来表示;
· 连续的项目通过减号"-"来表示;
· map结构里面的key/value对用冒号":"来分隔。
· YAML也有用来描述好几行相同结构的数据的缩写语法,数组用'[]'包括起来,hash用'{}'来包括。
例如:
name: John Smith
age: 37
wife:
name: Jane Smith
age: 25
children:
- name: Jimmy Smith
age: 15
- name: Jenny Smith
age 12
通过以上代码我们可以很容易了解一个人的基本信息,由此可见YAML的可读性确实不错。
YAML的适用范围?
· 由于实现简单,解析成本很低,YAML特别适合在脚本语言中使用。
· YAML比较适合做序列化。因为它是宿主语言数据类型直转的。
· YAML做配置文件也不错。比如Ruby on Rails的配置就选用的YAML。
YAML的问题?
由于兼容性问题,不同语言间的数据流转,建议现在不要用YAML。如兼容性没问题的话,YAML就太完美了。轻巧,敏捷,高效,简便,通用。这才是理想中的数据模型。
当然就现在而言,这还只是个理想。