第一部:什么是JSON
百度百科:
JSON全称:javaScript Object Notation
它基于 ECMAScript (w3c制定的js规范)的一个子集),采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
通俗理解:
JSON就是一个通用数据(关键词:数据)
通用数据:前后端都可以使用得数据!后端发给前端,前端发给后端,必须都用一种他们都认识的数据才能互相识别。而这个数据就是JSON!(类似中国的普通话是我们国家的通用语言。)
注意点:JSON它跟任何的编程语言都是无关的!唯一的联系就是它的创造者是从JS的对象格式产生的灵感,进而创造出不同的编程语言的通用数据。
我的概括:
①JSON本质是string类型也就是字符!
②JSON实质是数据!
③数组虽然可以存储数据,但是只能存储简单数据,对象虽然可以存储复杂数据,但是不是所有语言通用!所以JSON从这里演变而来!结构则类似数组和对象。
第二部:JSON的规则
①必须是字符
②基础格式参考JS中的对象(Array和Obj)
③对象格式中的key(键值对的键名)部分必须放在双引号中!!单引号也不行的
④不允许出现没有意义的逗号!
⑤不允许出现函数、undefined、NaN,可以出现null
⑥{}内或者[],再或者同时出现[{}],这些里面都不可以出现单引号!
实例介绍
var json={"name":"admin","age":18}; //不是JSON ,违背了上述的①;
var json="{'name':'admin'}"; //不是JSON,违背了上述的③、⑥;
var json='["hello",1,2]' //是JSON,格式参考了数组;
var json='{"name":function(){....},"x":NaN,“y”:undefined}' //不是JSON违反了⑤
var json=‘{“name”:"admin",}’ //不是JSON,违背了上述的④
第三部:JSON的使用
一、对象转JSON:使用JSON.stringify(对象名);
压力测试
let obj={
name:"wangwei",
age:19,
x:'n', //出现了JSON不可以存在的单引号
fn:function(){..}, //出现了函数,NaN,undefined
y:NaN,
z:undefined,
flag:true,, //出现了布尔值,和多余的逗号
}
console.log(JSON.stringify(obj));
**********************************结果显示*********************************
'{
"name":"wangwei", //字符依然是字符
"age":19, //数值依然是数值
"x":"n", //原本单引号变成双引号
"y":null, //NaN,undefined都变成了null
"z":null,
"flag":true //布尔值依然是布尔值,同时多余的逗号也消失了
//同时发现函数fn没有了
}'
总结:对象—>JSON
①所有的键名都加上了双引号
②出现的NaN,undefined都会变成null
③函数会被直接过滤掉不要
④转变中键值:原本类型不变
⑤多余的逗号会被清除留
⑥原本的单引号会被改成双引号
二、JSON转对象:使用JSON.parse()
第一:必须有正确格式的JSON
var json='{"name":"wangwei","age":19,"y":null}';
var json01='["hello",1,2]';
console.log(JSON.parse(json));
console.log(JSON.parse(json01));
//结果:
{
name:"wangwei",
age:19,
y:null
}
["hello",1,2]
总结:JOSN—>对象
①键名去掉双引号
②键值为null,依然为null
③键值类型不改变
最后牢记一点:
当数据是复杂类型,且多个的话:第一时间先想
‘[{…},{…},{…},{…},…]’
这种形式的JSON!
NZ必胜!
加油!