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方法。

目录
相关文章
|
7月前
|
JSON 前端开发 JavaScript
JSON 必知必会
JSON 必知必会
122 0
|
4月前
|
JSON 数据格式 C++
JSON(C++)
JSON(C++)
43 1
|
6月前
|
JSON JavaScript 前端开发
【gloomyfish】JSON初接触
【gloomyfish】JSON初接触
36 1
N..
|
7月前
|
存储 JSON 前端开发
JSON
JSON
N..
54 1
|
JSON 数据格式
json的一些小理解
个人学习总结
89 0
|
XML 存储 JSON
JSON使用总结
JSON: JavaScript Object Notation(JavaScript 对象表示法) JSON 是存储和交换文本信息的语法,类似 XML。
172 0
|
存储 JSON 前端开发
|
XML 存储 Web App开发
|
JSON fastjson 数据格式
json是什么,看了之后我才恍然大悟(二)
3. 返回一个List集合 4. 返回一个时间 (重要) 5. FastJson
json是什么,看了之后我才恍然大悟(二)
|
存储 JSON JavaScript
json是什么,看了之后我才恍然大悟(一)
十、JSON 前言 1.Controller返回json数据 2.上面的乱码问题
json是什么,看了之后我才恍然大悟(一)