JSON

简介: JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。


轻量级:相比于同样被广泛使用的数据交换格式xml要少很多标签


  • 什么是数据交换?

以前端JS进行ajax的POST请求为例,后端PHP处理请求为例:

  1. 前端构造一个JS对象,用于包装要传递的数据,然后将JS对象转化为JSON字符串,再发送请求到后端;
  2. 后端PHP接收到这个JSON字符串,将JSON字符串转化为PHP对象,然后处理请求。
  • JSON 文件的文件类型是 “.json”
  • JSON 文本的 MIME 类型是 “application/json”

相对于JS对象,JSON的格式更严格

对比内容 JSON JS对象
键名 必须是加双引号 可允许不加、加单引号、加双引号
属性值 只能是数值(10进制)、字符串(双引号)、布尔值和null,也可以是数组或者符合JSON要求的对象,不能是函数、NaN, Infinity, -Infinity和undefined 没限制
逗号问题 最后一个属性后面不能有逗号 可以
数值 前导0不能用,小数点后必须有数字 没限制


应用

JavaScript对象 (转换为)→ JSON字符串

JSON.stringify()

示例:

let b=[1,2]
JSON.stringify(b)  // "[1,2]"

JSON字符串 (解析为)→ JavaScript对象

JSON.parse()

示例:

JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]

原理

JavaScript 程序会使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。


如果一个JS对象上实现了toJSON方法,那么调用JSON.stringify去序列化这个JS对象时,

JSON.stringify会把这个对象的toJSON方法返回的值作为参数去进行序列化。

var info={
    "msg":"I Love You",
    "toJSON":function(){
        var replaceMsg=new Object();
        replaceMsg["msg"]="Go Die";
        return replaceMsg;
    }
};

JSON.stringify(info);
//出si了,返回的是:'"{"msg":"Go Die"}"',说好的忽略函数呢

Date类型可以直接传给JSON.stringify做参数,其中的道理就是,Date类型内置了toJSON方法。

目录
相关文章
|
存储 JavaScript 前端开发
qml var类型详解
qml var类型详解
503 1
|
Web App开发 Ubuntu 安全
【已解决】ubuntu 16.04安装最新版本google chrome出错, 旧版本chrome浏览器安装流程
【已解决】ubuntu 16.04安装最新版本google chrome出错, 旧版本chrome浏览器安装流程
2720 2
|
Web App开发 前端开发
canvas系列教程04 —— 渐变、阴影、路径、状态、Canvas对象、图形重叠模式
canvas系列教程04 —— 渐变、阴影、路径、状态、Canvas对象、图形重叠模式
1204 0
Element UI 表格数据格式化
Element UI 表格数据格式化
396 0
|
前端开发 JavaScript
零基础学 Vue + Element UI 第01步 —— 搭建开发环境、创建项目、修改默认模板、启动项目、访问项目
零基础学 Vue + Element UI 第01步 —— 搭建开发环境、创建项目、修改默认模板、启动项目、访问项目
399 1
|
前端开发 C++
CSS【详解】 标准盒模型 VS IE 盒模型
CSS【详解】 标准盒模型 VS IE 盒模型
363 0
发送短信验证码,60秒倒计时重发
发送短信验证码,60秒倒计时重发
397 0
发送短信验证码,60秒倒计时重发
直接使用阿里图标SVG图片
直接使用阿里图标SVG图片
861 0
直接使用阿里图标SVG图片
阿里图标库——批量下载图标
阿里图标库——批量下载图标
1853 2
|
Java Spring
成功解决Initialization failed for ‘https://start.spring.io‘ Please check URL, network and proxy settings
这篇文章提供了解决Spring Initializr网站初始化失败问题的方法,包括检查URL、网络和代理设置。
成功解决Initialization failed for ‘https://start.spring.io‘ Please check URL, network and proxy settings