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 相关文章推荐
jQuery判断复选框是否勾选的原理及示例
May 21 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
Sep 09 Javascript
Javascript实现Web颜色值转换
Feb 05 Javascript
js兼容火狐获取图片宽和高的方法
May 21 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
May 25 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
Jun 08 Javascript
浅谈JS继承_寄生式继承 & 寄生组合式继承
Aug 16 Javascript
利用vue.js把静态json绑定bootstrap的table方法
Aug 28 Javascript
解决vue admin element noCache设置无效的问题
Nov 12 Javascript
微信小程序后端实现授权登录
Feb 24 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
Sep 14 Javascript
小程序实现左滑删除的效果的实例代码
Oct 19 Javascript
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之第一天
2006/10/09 PHP
如何在PHP中使用Oracle数据库(2)
2006/10/09 PHP
PHP执行linux系统命令的常用函数使用说明
2010/04/27 PHP
php中读写文件与读写数据库的效率比较分享
2013/10/19 PHP
有关于PHP中常见数据类型的汇总分享
2014/01/06 PHP
PHP7.0版本备注
2015/07/23 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
用javascript实现的支持lrc歌词的播放器
2007/05/17 Javascript
jQuery 动态酷效果实现总结
2009/12/27 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
2012/02/03 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
Highcharts入门之简介
2016/08/02 Javascript
BootStrap Validator使用注意事项(必看篇)
2016/09/28 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
超级简易的JS计算器实例讲解(实现加减乘除)
2017/08/08 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
vue配置接口域名方法总结
2019/05/12 Javascript
python实现FTP文件传输的方法(服务器端和客户端)
2020/03/20 Python
大学生自荐书范文
2013/12/10 职场文书
毕业生欢送会主持词
2014/03/31 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
教师先进事迹材料
2014/12/16 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
2021/05/25 HTML / CSS
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js