[javascript] JSON简介

可能有人看到这个标题就嘿嘿一笑,JSON我还不知道么!

虽然我们经常使用JSON,但是很多人还是容易混淆Javascript Object和JSON

 

JSON,是一种是一种轻量级的数据交换格式,他的全名是JavaScript Object Notation(JavaScript对象表示法),属于ES3标准的一个子集。

由于JSON的易用性,现在流行与各个领域出现了各种变体。在我们熟知的AJAX中,X所代表的XML基本已经被JSON代替。由于跨浏览器获取跨域数据JSONP也是非常好的一种解决方案。WEB开发中基本免不了要与JSON打交道。现实中很多人分不清楚什么是javascript object 什么是JSON。

1.JSON的格式非常严格,JSON与Object相比就想是html对xhtml。

一个标准的JSON数据

{"a":"1"}

  JSON数据只能是纯文本!键和值都必须用(" ")双引包裹,js的Object 键可以不用这样处理,值如果不是字符串可以不这样处理。

//注意这些都不是JSON<br>{'a':1}
{'a':'1'}
{a:1}

  

2.既然JSON只能存储纯文本,对应js的就是字符串。那么我们要把js对象处理成为JSON的话怎么办呢。

其实每个JS的原生类都有(ES6 Function以添加)toString()这样的方法,能不能用么。复杂类型如果调用这个方法会返回自身的值

[1,2,3,4].toString(); //"1,2,3,4"({a:1}).toString(); //"[object Object]"

使用这个会得到一个这样的结果,如果我们把他们存入cookie或者localStorage,再次取出对象化这显然不是正确结果。

JSON对象上有两个静态方法,parse stringify

parse:负责把JSON数据转为js对象

stringify:负责吧js对象字符串化

3.parse把字符串对象化有很多种选择 eval('('+data+')'), new Function('return '+data)();

鉴于安全性,推荐使用第二种方法

4. stringify把对象字符串化,目前还没有快速的方法,这个过程可以看做是[1,2,3,4] 给数组两边加双引。

5.JSON已被IE8所原生支持,低版本的浏览器也有解决方案。

https://github.com/douglascrockford/JSON-js/blob/master/json2.js

JSON之父,做的JSON扩展。JSON只能存储纯文本,局限性还是显而易见的。JSON的另一个变种BSON (Binary JSON),他支持JSON没有的一些数据类型,如Date和BinData类型,MongoDB使用他来存储数据和网络交换数据。

 

 

JSON校检:http://jsonlint.com/

JSON官网:http://json.org/json-zh.html

posted @   小玉西瓜  阅读(2108)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示