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 相关文章推荐
DOM 中的事件处理介绍
Jan 18 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
May 06 Javascript
解决jquery版本冲突的有效方法
Sep 02 Javascript
jQuery实用技巧必备(中)
Nov 03 Javascript
jQuery实现打开页面渐现效果示例
Jul 27 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
Aug 15 Javascript
利用js编写网页进度条效果
Oct 08 Javascript
详解vue-router 初始化时做了什么
Jun 11 Javascript
jQuery AJAX与jQuery事件的分析讲解
Feb 18 jQuery
Vue防止白屏添加首屏动画的实例
Oct 31 Javascript
基于jQuery实现挂号平台首页源码
Jan 06 jQuery
如何在vue中使用video.js播放m3u8格式的视频
Feb 01 Vue.js
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
PR值查询 | PageRank 查询
2006/12/20 PHP
PHP三元运算的2种写法代码实例
2014/05/12 PHP
php文件上传类完整实例
2016/05/14 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
js 动态文字滚动的例子
2011/01/17 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
浅谈Node Inspector 代理实现
2017/10/19 Javascript
Node中使用ES6语法的基础教程
2018/01/05 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
2018/09/29 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
Webpack 4如何动态切割JS注入文件名详解
2019/07/09 Javascript
Vue实现导航栏的显示开关控制
2019/11/01 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
python strip()函数 介绍
2013/05/24 Python
Python中用于检查英文字母大写的isupper()方法
2015/05/19 Python
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
Python2与python3中 for 循环语句基础与实例分析
2017/11/20 Python
python3之模块psutil系统性能信息使用
2018/05/30 Python
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
使用Python实现NBA球员数据查询小程序功能
2020/11/09 Python
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
教师的实习自我鉴定
2013/12/17 职场文书
酒店人事专员岗位职责
2013/12/19 职场文书
青年文明号事迹材料
2014/01/18 职场文书
社区端午节活动方案
2014/01/28 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
深入理解redis中multi与pipeline
2021/06/02 Redis
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫
vue如何清除浏览器历史栈
2022/05/25 Vue.js