关于Json格式的理解

因为现在目前从事的工作,前台数据的传递和交互都是通过ajax来实现服务端的操作,那么就少不了Json。

 Json定义:

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

 Json结构:

  “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object)、纪录(record)、结构(struct)、字典(dictionary)、哈希表(hash table)、有键列表(keyed list)或者关联数组 (associative array)。

  值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

 Json形式:

  1,对象是一个无序的“‘名称/值’对”集合。一个对象以“{”开始、“}”结束。每个“名称”后跟一个“:”,“‘名称/值’ 对”之间使用“,”分隔。

      

  2,数组是值(value)的有序集合。一个数组以“[”开始、“]”结束。值之间使用“,”分隔。

      

      3,值(value)可以是双引号括起来的字符串(string)、数值(number)、truefalsenull、对象(object)或者数组(array)。这些结构可以嵌套。

       

      4,字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

字符串(string)与C或者Java的字符串非常相似

  

 Json的使用:

JSON官方网站提供的一个开源的JSON解析器和字符串转换器:json.js

String.parseJSON()解析函数,它将JSON文本解析称object或者array,可以抛出一个语法错误的异常;

Array.toJSONString(), boolean.toJSONString(), date.toJSONString(), number.toJSONString(), object.toJSONString(), string.toJSONString()这几个函数可以生成JSON文本。

示例代码:

1 var str='["0","1"]';
2 var obj=str.parseJSON();
3 document.write(obj[0]);
4 document.write(obj[1]);

结果是01

var doc=new Array();
doc[0]='0';
doc[1]='1';
document.write(doc.toJSONString());

结果是["0","1"]

还有一些Json对象和Json数据格式的转换,JSON对象的stringify()和 parse()方法。JSON.stringify(obj)将JSON转为字符串。JSON.parse(string)将字符串转为JSON格式,不过有一定要注意的是如果是从服务端传过来的Json数据格式,可以先用eval(“(“ + jsonStr + ”)”)方式来转换成相应的Json对象,便于后面的Js操作.

Json处理方式:

 Json可以以GET 和POST两种方式传递到后台去处理,期中GET方式以名称/值对发送,POST以表单提交方式处理。不管使用 GET 还是 POST,关键之处在于 JSON 就只是文本。由于不需要特殊编码而且每个服务器端脚本都能处理文本数据,所以可以轻松利用 JSON 并将其应用到服务器。一旦你编写完客户端 JavaScript 代码、允许用户与 Web 表单和 Web 页的交互、收集发送给服务器端程序以做处理所需的信息,此时,服务器就成为了应用程序(如果调用了异步使用的服务器端程序,则可能是我们认为的所谓的“Ajax 应用程序”)中的主角。在此时,您在客户端所做的选择(比如使用 JavaScript 对象,然后将其转换成 JSON 字符串)必须要与服务器端的选择相匹配,比如使用哪个 API 解码 JSON 数据。

不管在服务器端使用何种语言,在服务器端处理 JSON 基本上就需要两个步骤。

(1) 针对编写服务器端程序所用的语言,找到相应的 JSON 解析器/工具箱/帮助器 API。

(2) 使用 JSON 解析器/工具箱/帮助器 API 取得来自客户机的请求数据并将数据转变成脚本能理解的东西。

JSON与XML的比较

可读性

JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。

可扩展性

XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。

编码难度

XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。

解码难度

XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。

总结

根据工作中碰到的问题,我认为在从前台获取相应的Json对象,然后在传输的时候,构造的一个大的Json对象,转化成相应的Json数据格式的文本,传递到服务端处理,服务端通过API工具或者自身语言自带的工具来处理获取的Json数据文本,转化成相应的Json对象,处理完之后,传递给前台也是类似的过程,然后在前台可以把处理后的Json数据值转换成Json对象,便于我们后期处理,Json始终是以文本来传输。

水平有限,写的不足之处,请指出。

posted @ 2012-09-21 19:16  cryAllen  阅读(1850)  评论(0编辑  收藏  举报