您的位置:首页 > Web前端 > JavaScript

JS/JSON详解

2013-11-18 10:14 204 查看
JSON(Javascript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本根式,是理想的数据交换格式。

同时JOSN是JavaScript原生格式,这意味在JavaScript中处理JSON数据不需要任何特殊的API或者工具包。

JSON是javascript对象文字符号的一个子集,由于JSON是javascript的一个子集,它可以自如的在javascript中使用。



在JSON中,有俩种结构:对象和数组。

1 一个对象以括号开始,括号结束。名称与值之间用冒号分开“:”,“名称/值” 对之间用逗号分开“,”。

名称用引号括起来,值如果是字符型则用引号括起来,数值型则不用。例如:

对象:var str={"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"};

取值:var xild = str2.xlid;

var xldigitid = str2["xldigitid"];

对象:var myJSONObject = {

"bindings": [

{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},

{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete://.*"},

{"ircEvent": "PRIVMSG", "method": "randomURL", "regex": "^random://.*"}

]

};

取值:var jsonObj = myJSONObject.bindings;

var ircEvent = jsonObj[0].ircEvent;

在这个例子里,创建了只包含一个成员bindings的对象,而这个对象又包含了一个拥有三个对象的数组,

其中每个数组对象包含了ircEvent,method,regex三个成员。

取值var newURL = myJSONObject.bindings[0].method;



2 数组(array)是值得有序集合。一个数组用中括号开始,中括号结束。例如:

数组:var jsonranklist = [{"xild":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"},

{"xild":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}];

取值:var xild = jsonranklist[0]["xild"];

var xild = jsonranklist[0].xild;

在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:

JSON字符串:

var str = '{"name":“cxh”,"sex":"man"}';

取值:var obj = eval('(' + str1 + ')');

var name = obj.name;

JSON对象 :

var str2 = {"name":"cxh","sex":"man"};

取值:var name= str2.name;

var
sex= str2["sex"];

一、JSON字符串转换为JSON对象的三种方法

eval()会触发javascript的编译器。因为JSON是javascript的一个真子集。编译器会正确解析字符串内容,同时生成对象结构。字符串必须用括号括起来,以免产生javascript语法歧义。

var obj = eval( '(' + str1 + ')' );

或者 var obj = str1.parseJSON(); //修改后的版本

或者 var obj = JSON.parse(str1); //修改前的版本

然后,就可以这样读取:

alert(obj.name);

alert(obj.sex);



例如:

var str1 = '{ "name": "cxh", "sex": "man" }';

var data = eval( "(" + str1 + ")" );

alert( data.name);

注意:如果obj本来就是JSON对象,那么运用eval()函数后还是JSON对象,但是运用parseJSON()函数处理后会抛出语法异常。

二、JSON对象转换成JSON字符串的俩种方法

var last = obj.toJSONString(); //修改后的版本

或者

var last = JSON.stringify(obj);//修改前的版本

alert(last);

注意:

一,上面多个要领中,除了eval()函数是js自带的以外,其他的都需要json.js包。

二,新版本的JSON修改了API,将JSON.stringify()和JSON.parse()俩个要领都注入到javascript的内建对象里面,

前者变成了Object.toJSONString(),而后者变成了String.parseJSON()。

如果提示找不到toJSONString和parseJSON()要领,则说明您的json包版本太低。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: