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包版本太低。
同时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包版本太低。
相关文章推荐
- javascript之Window 对象
- Javascript自执行三种方法
- 深入领悟JavaScript中的面向对象
- js中的push和join方法
- ExtJS正则表达式使用说明
- Resumable.js – 基于 HTML5 File API 的文件上传
- js事件不生效的原因
- 设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
- js iframe问题
- javascript封装的ajax函数库
- JS JSON对象转为字符串的简单实现方法
- JS_工厂模式
- js一些工作中经常用到的脚本
- javascript获取ckeditor编辑器的值(实现代码)
- js 页面元素的几个用法总结
- javascript封装的ajax函数库
- Javascript 操作合并table列rowspan
- javascript窗口宽高,鼠标位置,滚动高度(详细解析)
- js产生随机数
- javascript design patterns