JSON和JavaScript对象
var obj={width:100,height:200},这样的并不叫JSON,并且JSON只是一种数据格式,并不是具体的实例。
但很多人把这样的JS对象当成JSON,下面把这个问题讲清楚
一、JSON是什么?(JSON和JavaScript对象有什么区别?)如何把JS对象转化为JSON字符串?又如何把JSON字符串转化为JavaScript对象?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,JSON格式的数据,主要是为了跨平台交流数据用的。
但JSON和JavaScript确实存在渊源,可以说这种数据格式是从JavaScript对象中演变出来的,它是JavaScript的一个子集。JSON本身的意思就是JavaScript对象表示法(JavaScript Object Notation),它用严格的JavaScript对象表示法来表示结构化的数据。
它是一种严格的js对象的格式,JSON的属性名必须有双引号,如果值是字符串,也必须是双引号;
JSON只是一种数据格式(或者叫数据形式),数据格式其实就是一种规范,格式、形式、规范是不能用来存诸数据的。我们不能把以下的对象叫JSON,比如:
<script>
var obj2={};//这只是JS对象
var obj3={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 |
最新文章
- EF6.0 Code First使用mysql的各种错误和解决办法!!
- 读取TDrawGrid之获取博易数据
- Java日期时间操作的一些方法
- PHP中使用CURL请求页面,使用fiddler进行抓包
- CFNetwork的错误代码参考
- 扒皮下GitHub 404的图片层次轴动特效
- R语言介绍
- Google Cloud Platform
- jQuery里ajax的用法
- IOS 判断日期是今天,昨天还是明天
- C++函数学习笔记
- (step5.1.2)hdu 1305(Immediate Decodability——字典树)
- [技术]浅谈OI中矩阵快速幂的用法
- 主机管理+堡垒机系统开发:strace命令用法详解(六)
- 初探React Hooks &; SSR改造
- 虚拟机设置IP
- SSH 安全加固
- wap2app(十)--wap2app 添加原生底部导航,添加原生标题栏,填坑
- [java基础]一文理解java多线程必备的sychronized关键字,从此不再混淆!
- 洛谷 P1525 关押罪犯