JS操作JSON要领详细总结


Posted in Javascript onAugust 25, 2013

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"};

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对象

然后,就可以这样读取:
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 相关文章推荐
屏蔽Flash右键信息的js代码
Jan 17 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
Apr 27 Javascript
基于KMP算法JavaScript的实现方法分析
May 03 Javascript
jQuery获得内容和属性方法及示例
Dec 02 Javascript
JavaScript如何实现组合列表框中元素移动效果
Mar 01 Javascript
arcgis for js 修改infowindow样式的方法
Nov 02 Javascript
浅谈Javascript事件对象
Feb 05 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
Apr 26 Javascript
Angular使用动态加载组件方法实现Dialog的示例
May 11 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
Apr 04 Javascript
基于layui框架响应式布局的一些使用详解
Sep 16 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
Nov 03 Javascript
JS 两个字符串时间的天数差计算
Aug 25 #Javascript
js中onload与onunload的使用示例
Aug 25 #Javascript
JQuery中对Select的option项的添加、删除、取值
Aug 25 #Javascript
JavaScript限定复选框的选择个数示例代码
Aug 25 #Javascript
jquery中加载图片自适应大小主要实现代码
Aug 23 #Javascript
jquery eval解析JSON中的注意点介绍
Aug 23 #Javascript
jQuery中RadioButtonList的功能及用法实例介绍
Aug 23 #Javascript
You might like
PHP 用数组降低程序的时间复杂度
2009/12/04 PHP
发一个php简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
PHP操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
php tp验证表单与自动填充函数代码
2012/02/22 PHP
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
jQuery点击后一组图片左右滑动的实现代码
2012/08/16 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
JQuery动态添加Select的Option元素实现方法
2016/08/29 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
js回文数的4种判断方法示例
2019/06/04 Javascript
js仿京东放大镜效果
2020/08/09 Javascript
python使用urllib模块开发的多线程豆瓣小站mp3下载器
2014/01/16 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
Python @property使用方法解析
2019/09/17 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
汉语言文学毕业生求职信
2013/10/01 职场文书
高中生毕业自我鉴定范文
2013/12/22 职场文书
幼儿园小班植树节活动方案
2014/03/04 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
大学迎新生标语
2014/10/06 职场文书
捐助感谢信
2015/01/22 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书