关于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)、true
、false
、 null
、对象(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始终是以文本来传输。
水平有限,写的不足之处,请指出。