javascript操作JSON的要领总结


Posted in Javascript onDecember 09, 2012

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。
本文主要是对JS操作JSON的要领做下总结。
在JSON中,有两种结构:对象和数组。
1. 一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值' 对”之间运用 “,”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:

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

名称是一个字符串; 值可以是一个字符串,一个数值,一个对象,一个布林值,一个有串行表,或者一个null值。
值的有串行表(Array):一个或者多个值用“,”分区后,使用“[”,“]”括起来就形成了这样的列表,形如:

[collection, collection]
字符串:以""括起来的一串字符。
数值:一系列0-9的数字组合,可以为负数或者小数。还可以用“e”或者“E”表示为指数形式。
布林值:表示为 true 或者 false。
2. 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。
例如:

var jsonranklist=[{"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"},{"xlid":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}];

为了方便地处理JSON数据,JSON提供了json.js包,下载地址:http://www.json.org/json.js
在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:
JSON字符串:
var str1 = '{ "name": "cxh", "sex": "man" }';

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

一、JSON字符串转换为JSON对象
要运用上面的str1,必须运用下面的要领先转化为JSON对象:
//由JSON字符串转换为JSON对象
var obj = eval('(' + str + ')');

或者
var obj = str.parseJSON(); //由JSON字符串转换为JSON对象

或者
var obj = JSON.parse(str); //由JSON字符串转换为JSON对象 
[html] 
然后,就可以这样读取: 
[code] 
Alert(obj.name); 
Alert(obj.sex);

特别留心:如果obj本来就是一个JSON对象,那么运用 eval()函数转换后(哪怕是多次转换)还是JSON对象,但是运用 parseJSON()函数处理后会有疑问(抛出语法异常)。
二、可以运用 toJSONString()或者全局要领 JSON.stringify()将JSON对象转化为JSON字符串
例如:
var last=obj.toJSONString(); //将JSON对象转化为JSON字符

或者
var last=JSON.stringify(obj); //将JSON对象转化为JSON字符 
alert(last);

留心:
上面的多个要领中,除了eval()函数是js自带的之外,其他的多个要领都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个要领都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()要领,则说明您的json包版本太低。
Javascript 相关文章推荐
JavaScript加强之自定义event事件
Sep 21 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
Nov 17 Javascript
学习vue.js条件渲染
Dec 03 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
Jan 12 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
May 11 Javascript
vue如何使用 Slot 分发内容实例详解
Sep 05 Javascript
jQuery实现的表格前端排序功能示例
Sep 18 jQuery
对vue 键盘回车事件的实例讲解
Aug 25 Javascript
Vue项目引进ElementUI组件的方法
Nov 11 Javascript
使用layer模态框给新页面传值的方法
Sep 27 Javascript
js+html+css实现手动轮播和自动轮播
Dec 30 Javascript
jQuery实现穿梭框效果
Jan 19 jQuery
js写一个弹出层并锁屏效果实现代码
Dec 07 #Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
Dec 07 #Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
Dec 07 #Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
Dec 06 #Javascript
php图像生成函数之间的区别分析
Dec 06 #Javascript
javascript SpiderMonkey中的函数序列化如何进行
Dec 05 #Javascript
javascript中有趣的反柯里化深入分析
Dec 05 #Javascript
You might like
PHP防止注入攻击实例分析
2014/11/03 PHP
Thinkphp调用Image类生成缩略图的方法
2015/03/07 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
jQuery实现textarea自动增长宽高的方法
2015/12/18 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
解决AngualrJS页面刷新导致异常显示问题
2017/04/20 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
iview日期控件,双向绑定日期格式的方法
2018/03/15 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
用Python设计一个经典小游戏
2017/05/15 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
2017/08/30 Python
使用虚拟环境打包python为exe 文件的方法
2019/08/29 Python
Python将视频或者动态图gif逐帧保存为图片的方法
2019/09/10 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
python操作链表的示例代码
2020/09/27 Python
10个顶级Python实用库推荐
2021/03/04 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
捐助倡议书范文
2014/04/15 职场文书
生物科学专业毕业生求职信
2014/06/02 职场文书
交通安全月活动总结
2015/05/08 职场文书
红色经典电影观后感
2015/06/18 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
情况说明书格式及范文
2019/06/24 职场文书
30岁前绝不能错过的10本书
2019/08/08 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis