问题:当我们往后台发送请求,你知道我们发送的结构是什么吗?JSON结构体
JSON:
- JSON 是一种语法,用来序列化对象、数组、数值、字符串、布尔值和 null 。
- JSON是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。
- JSON以键值的形式
- 键名必须用双引号
- 值只能是数值(10进制),字符串(双引号),布尔值,和null,数组,或者符合JSON要求的对象,不能是函数,NaN, Infinity, -Infinity和undefined
- 最后一个属性后面不能有逗号
- 前导0不能用
- 小数点后必须有数字
正确的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 等 |