问题:当我们往后台发送请求,你知道我们发送的结构是什么吗?JSON结构体

JSON:

  • JSON 是一种语法,用来序列化对象、数组、数值、字符串、布尔值和 null 。
  • JSON是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。
  • JSON以键值的形式
  1. 键名必须用双引号
  2. 值只能是数值(10进制),字符串(双引号),布尔值,和null,数组,或者符合JSON要求的对象,不能是函数,NaN, Infinity, -Infinity和undefined
  3. 最后一个属性后面不能有逗号
  4. 前导0不能用
  5. 小数点后必须有数字

正确的json标准数据格式

{
  "data":null,
  "num":0.12,
  "str":"历史",
  "arr":["name","age"],
  "obj":{"name":"赵四"},
  "count":5522545
}

错误的json数据格式

{
  //错误1:键名使用了单引号
  'data':"json",
    //错误2:键值使用了单引号
  "name":'赵四',
    //错误3:键值的是数字时,第一个数不能为0,即前导不能为0
  "count":05222,
    //错误4:为小数时,小数点后面必须跟值
  "num":0.,
    //错误5:键值不能是NaN,undefined,等值
  "num1":NaN,
    //错误6:最后一项不能有逗号
  "nan":"李能",
}

注意:json文件中不带有注释

JS对象

JavaScript 中的所有事物都是对象:字符串、数值、数组、函数…。对象只是一种特殊的数据。对象拥有属性和方法。
通过 JavaScript,能够定义并创建自己的对象。
创建新对象有两种不同的方法:

  • 使用 Object 定义并创建对象的实例。
  • 使用函数来定义对象,然后创建新的对象实例。
person=new Object();
person.firstname="John";
person.lastname="Doe";
person.age=50;
person.eyecolor="blue";

也可以使用对象字面量来创建对象,语法格式如下:

{ name1 : value1, name2 : value2,…nameN : valueN }

person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};

补充一个知识点:
new 和不 new的区别:

  • 如果 new 了函数内的 this 会指向当前这个 person 并且就算函数内部不 return 也会返回一个对象。
  • 如果不 new 的话函数内的 this 指向的是 window。
function person(firstname,lastname,age,eyecolor)
{
    this.firstname=firstname;
    this.lastname=lastname;
    this.age=age;
    this.eyecolor=eyecolor;
    return [this.firstname,this.lastname,this.age,this.eyecolor,this] 
}

var myFather=new person("John","Doe",50,"blue");
var myMother=person("Sally","Rally",48,"green");
console.log(myFather) // this 输出一个 person 对象
console.log(myMother) // this 输出 window 对象

注意:区分在JavaScript里的对象格式和在json格式里的对象格式

JavaScript对象

var stu ={id:1,"name":"mike",'age':25,card:'516512322',};
// 1.键名可以不写引号,或是单引号,或是双引号
// 2.最后一个属性后面允许有逗号
// 3.属性是字符串类型可以是双引号或者是单引号

JSON格式里的对象

{
  "id":{"name":"jack","id":51231,"score":87}
}

JSON 与 JS 对象的转换

  • 从 JSON 转为 JS 对象:使用 JSON.parse() 方法
  • 从 JS 对象转为 JSON:使用 JSON.stringify() 方法

js对象转json 字符串:json = JSON.stringify(js);

let obj = {
    a: 'hello',
    b: 'world'
}
let json = JSON.stringify(obj);
console.log(json); // {"a":"hello","b":"world"}
console.log(typeof json); // string

json字符串转成js对象js = JSON.parse(json);

let json = '{"a":"hello","b":"world"}';
let obj = JSON.parse(json);
console.log(obj); // { a: 'hello', b: 'world' }

总结:

区别

JSON

JavaScript对象

含义

仅仅是一种数据格式

表示类的实例

传输

可以跨平台数据传输

不能传输

变现

键值对方式,键必须加双引号,值不能是方法函数,不能是undefined/NAN

键值对方式,键不加引号,值可以是函数、对象、字符串、数字、boolean 等