• [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
    {'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

  • 相关阅读:
    python之变量与常量
    Python之历史
    关于图像重采样插值算法
    常用的日期的方法
    数组常用的方法
    判断鼠标进入容器方向
    用JS实现一个时钟的效果
    搞定flex布局
    整理 45 道 CSS 基础面试题(附答案)
    CSS实战3
  • 原文地址:https://www.cnblogs.com/enix/p/2531218.html
Copyright © 2020-2023  润新知