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 相关文章推荐
JS模拟面向对象全解(一、类型及传递)
Jul 13 Javascript
jQuery $.get 的妙用 访问本地文本文件
Jul 12 Javascript
node.js中的fs.appendFileSync方法使用说明
Dec 17 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
Nov 25 Javascript
JavaScript优化专题之Loading and Execution加载和运行
Jan 20 Javascript
Select下拉框模糊查询功能实现代码
Jul 22 Javascript
js 声明数组和向数组中添加对象变量的简单实例
Jul 28 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
Aug 28 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
Dec 06 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
Apr 16 Javascript
超轻量级的js时间库miment使用解析
Aug 02 Javascript
微信小程序入门之指南针
Oct 22 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
7个超级实用的PHP代码片段
2011/07/11 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
2012/09/23 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
2011/03/25 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
详解webpack 入门与解析
2018/04/09 Javascript
vue2.0项目实现路由跳转的方法详解
2018/06/21 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
Vue面试题及Vue知识点整理
2018/10/07 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
vue选项卡切换登录方式小案例
2019/09/27 Javascript
jQuery实现动态加载瀑布流
2020/09/01 jQuery
Python验证码识别的方法
2015/07/10 Python
python处理xml文件的方法小结
2017/05/02 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
Python unittest框架操作实例解析
2020/04/13 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
六道php面试题附答案
2014/06/05 面试题
UNIX文件名称有什么规定
2013/03/25 面试题
新闻工作者先进事迹
2014/05/26 职场文书
土建施工员岗位职责
2015/04/11 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
2015年党小组工作总结
2015/05/26 职场文书
工作经历证明范本
2015/06/15 职场文书
利用python做数据拟合详情
2021/11/17 Python