JSON与JS对象的区别与对比


Posted in Javascript onMarch 01, 2017

JSON是什么?(JSON和JavaScript对象有什么区别?)如何把JS对象转化为JSON字符串,又如何把JSON字符串转化为JavaScript对象?

JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。 JSON 是 JavaScript 原生格式,这意味着在JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。JSON的规则很简单: 对象是一个无序的“名称/值”对集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“名称/值”对之间使用“,”(逗号)分隔。

它是一种严格的js对象的格式,JSON的属性名必须有双引号,如果值是字符串,也必须是双引号;

JSON只是一种数据格式(或者叫数据形式);

<script>
var obj2={};//这只是JS对象
var obj3={width:100,height:200};/*这跟JSON就更不沾边了,只是JS的 对象 */
var obj4={'width':100,'height':200};/*这跟JSON就更不沾边了,只是JS的对象 */
var obj5={"width":100,"height":200,"name":"rose"}; /*我们可以把这个称做:JSON格式的JavaScript对象 */
var str1='{"width":100,"height":200,"name":"rose"}';/*我们可以把这个称做:JSON格式的字符串 */
var a=[
 {"width":100,"height":200,"name":"rose"},
 {"width":100,"height":200,"name":"rose"},
 {"width":100,"height":200,"name":"rose"},
 ];
 /*这个叫JSON格式的数组,是JSON的稍复杂一点的形式 */
var str2='['+
 '{"width":100,"height":200,"name":"rose"},'+
 '{"width":100,"height":200,"name":"rose"},'+
 '{"width":100,"height":200,"name":"rose"},'+
 ']' ;
 /* 这个叫稍复杂一点的JSON格式的字符串 */ 
</script>

JSON和JS对象区别对比表

区别 Json Javascript对象
含义 仅仅是一种数据格式 表示类的实例
传输 可以跨平台数据传输,速度快 不能传输
表现 1,键值对方式,键必须加双引号 2,值不能是方法函数,不能是undefined/NaN 1,键值对方式,键不加引号 2,值可以是函数、对象、字符串、数字、boolean 等
相互转换 Json转化为js对象: 1,JSON.parse(jsonstring); (不兼容ie7) 2,Jsobj=eval("("+jsonstring+")"); (兼容所有浏览器,但不安全,会执行json里面的表达式?) Js对象转换为Json: JSON.stringify(jsobj);(不兼容ie7)
其他 调用json官网的js,实现parse 和 stringify 在各个浏览器的兼容: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

总而言之你可以理解为JSON是JS下的一种数据格式,他从属于JS,并且在处理JSON数据时可直接使用JS内置API

Javascript 相关文章推荐
javascript 跨浏览器开发经验总结(五) js 事件
May 19 Javascript
window.ActiveXObject使用说明
Nov 08 Javascript
js中一维数组和二位数组中的几个问题示例说明
Jul 17 Javascript
javascript制作坦克大战全纪录(2)
Nov 27 Javascript
javascript 数组的正态分布排序的问题
Jul 31 Javascript
利用jQuery异步上传文件的插件用法详解
Jul 19 jQuery
Javascript实现跨域后台设置拦截的方法详解
Aug 04 Javascript
vue实现的请求服务器端API接口示例
May 25 Javascript
微信小程序与公众号卡券/会员打通的问题
Jul 25 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
Feb 01 Javascript
Ant Design的Table组件去除
Oct 24 Javascript
JS前端可视化canvas动画原理及其推导实现
Aug 05 Javascript
JavaScript下拉菜单功能实例代码
Mar 01 #Javascript
Angular2 路由问题修复详解
Mar 01 #Javascript
浅谈js for循环输出i为同一值的问题
Mar 01 #Javascript
jQuery EasyUI Draggable拖动组件
Mar 01 #Javascript
Angular.js之作用域scope'@','=','&amp;'实例详解
Feb 28 #Javascript
jQuery EasyUI ProgressBar进度条组件
Feb 28 #Javascript
jQuery实现ajax无刷新分页页码控件
Feb 28 #Javascript
You might like
php学习之简单计算器实现代码
2011/06/09 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
php中session使用示例
2014/03/29 PHP
PHP小技巧之函数重载
2014/06/02 PHP
javascript URL编码和解码使用说明
2010/04/12 Javascript
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
2013/04/02 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
2017/01/08 Javascript
nodejs异步编程基础之回调函数用法分析
2018/12/26 NodeJs
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
python学习手册中的python多态示例代码
2014/01/21 Python
python使用正则表达式检测密码强度源码分享
2014/06/11 Python
Python实现网站文件的全备份和差异备份
2014/11/30 Python
Python批量查询域名是否被注册过
2017/06/21 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
python 切换root 执行命令的方法
2019/01/19 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
关于python多重赋值的小问题
2019/04/17 Python
python向图片里添加文字
2019/11/26 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
python定义类self用法实例解析
2020/01/22 Python
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
函授自我鉴定
2013/11/06 职场文书
军训自我鉴定
2014/01/22 职场文书
幼儿园元旦亲子活动方案
2014/02/17 职场文书
学校安全工作汇报材料
2014/08/16 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js