数据交换格式

当前比较流行的几种数据交换格式

主要包括以下三种:

· XML

· JSON

· YAML

 

 

XML

    XML是当前编程中最为流行的数据交换格式,拥有跨平台、跨语言的优势。对于XML应该很熟悉,所以不再多做介绍。

 

 

JSON

什么是JSON

· JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式;

· 它是基于JavaScript的一个子集;

 

 

JSON的有优点?

· 易于人阅读和编写。同时也易于机器解析和生成;

· 同XMLHTML片段相比,JSON提供了更好的简单性和灵活性;在Javascript地盘内,JSON毕竟是主场作战,其优势当然要远远优越于xml

· 非常适合于服务器与JavaScript 的交互

 

 

JSON数据的数据格式

JSON数据格式非常简单,简单来说,只有四点:

1)并列数据之间用逗号(,)分隔;

2)映射用冒号(:)表示;

3)并列数据的集合用方括号([])表示;

4)映射的集合用大括号({})表示。

上面4条规则就是JSON的所有内容。

 

 

JSON的数据表示

XML一样,JSON也是基于纯文本的数据格式。由于JSON天生是为JavaScript准备的,因此,JSON的数据格式非常简单,您可以用 JSON传输一个简单的StringNumberBoolean,也可以传输一个数组,或者一个复杂的Object 对象。

1)字符串格式:和大多数编程语言一样,引号之内就可以定义字符串;

   

 

2)数字格式:

   

3)Boolean数据类型;表示为truefalse

   

 

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就太完美了。轻巧,敏捷,高效,简便,通用。这才是理想中的数据模型。

当然就现在而言,这还只是个理想。

posted @ 2013-08-21 15:48  barbabravo  阅读(738)  评论(0编辑  收藏  举报