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 相关文章推荐
IE DOM实现存在的部分问题及解决方法
Jul 25 Javascript
Jquery UI震动效果实现原理及步骤
Feb 04 Javascript
javascript基于DOM实现权限选择实例分析
May 14 Javascript
javascript实现根据3原色制作颜色选择器的方法
Jul 17 Javascript
node.js插件nodeclipse安装图文教程
Oct 19 Javascript
Vue.JS入门教程之事件监听
Dec 01 Javascript
jQuery手指滑动轮播效果
Dec 22 Javascript
laydate.js日期时间选择插件
Jan 04 Javascript
基于javascript实现数字英文验证码
Jan 25 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
Apr 23 Javascript
spirngmvc js传递复杂json参数到controller的实例
Mar 29 Javascript
跟混乱的页面弹窗说再见
Apr 11 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 IP及IP段进行访问限制的代码
2008/12/17 PHP
javascript入门·对象属性方法大总结
2007/10/01 Javascript
js form 验证函数 当前比较流行的错误提示
2009/06/23 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
jquery实现用户信息修改验证输入方法汇总
2015/07/18 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
2016/08/25 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
2016/10/10 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
在vue.js中抽出公共代码的方法示例
2017/06/08 Javascript
JS实现商品筛选功能
2020/08/19 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
深入Python函数编程的一些特性
2015/04/13 Python
python实现连接mongodb的方法
2015/05/08 Python
Python语言的面相对象编程方式初步学习
2016/03/12 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
名片管理系统python版
2018/01/11 Python
Python之pandas读写文件乱码的解决方法
2018/04/20 Python
Python 给某个文件名添加时间戳的方法
2018/10/16 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
2020/07/14 Python
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
idealfit英国:世界领先的女性健身用品和运动衣物品牌
2017/11/25 全球购物
介绍java中初始化块的使用
2012/09/11 面试题
什么是封装
2013/03/26 面试题
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
送给客户微信问候语!
2019/07/04 职场文书
Redis 哨兵集群的实现
2021/06/18 Redis
解决mysql的int型主键自增问题
2021/07/15 MySQL