javascript跳跃式前进(3) - 跳入JSON

时间:2023-03-09 04:26:46
javascript跳跃式前进(3) - 跳入JSON

前言

JSON崛起不是意外,是顺应时代;相当简洁小巧的书写模式及阅读方式;

基础

看这篇文章: JSON知识点汇总_W3SCHOOL


初步进阶

早期的解析仅仅实用eval() ,可是这货太easy给注入恶意代码…之后就有人写了个JSON2.js来让低级浏览器支持JSON

ES5開始,就出现了对应的规范来和函数处理JSON对象[stringify()和parse()];

值得一提的是:

1. 每一个属性名都必须用双引號或单引號,否则会抛出异常!!!

2. JSON数组的格式为字面量格式

3. 每一个值键对后面若是还有值键对,应该以逗号隔开

  • stringify() : 把javascript对象序列化为字符串
var person = {
"name" :"CRPER",
"age" : 24,
"Interesting" :['reading','play']
} var person_str = JSON.stringify(person); //这一步就是把JSON对象转为对应的字符串 console.log(person_str); //打印值 : {"name":"CRPER","age":24,"Interesting":["reading","play"]}
console.log(typeof person_str); //打印值: "string" /*
过滤:第二个參数(riviver)支持传入一个数组或者一个函数来过滤整个json对象不须要的属性和值
默认须要返回自身value[就是条件不成立的时候]
*/
var person1 = JSON.stringify(person,["age","Interesting"]);
console.log(person1); //打印值:{"age":24,"Interesting":["reading","play"]} var person2 = JSON.stringify(person,function(key,value){
switch(key){
case "name" :return value + "LIN";
case "age":return parseInt(value) + 1;
default : return value;
}
}) console.log(person2); //打印值: "{"name":"CRPERLIN","age":25,"Interesting":["reading","play"]}" var person2 = JSON.stringify(person,function(key,value){
if(key == "name"){
return "LIN" + value;
}else if(key == "age"){
return 10+value;
}
else{
return value
}
}) console.log(person2); //打印值: "{"name":"LINCRPER","age":34,"Interesting":["reading","play"]}" /*缩进:第三个參数是控制缩进的,最大的缩进为10个字符*/
var person3 = JSON.stringify(person,null,4); console.log(person3);
/*
"{
"name": "CRPER",
"age": 24,
"Interesting": [
"reading",
"play"
]
}"
*/ /*
toJSON方法,函数过滤器的补充;
1. 若对象内有toJSON,则优先运行,无则返回自身;
2. 若作为第二个參数传入,则对函数进行过滤
*/ var book = {
"title" : "JS大神进阶记",
"page_total":999,
"money":99,
"copyright":"CRPER",
toJSON:function(){
return this.title;
}
} var test = JSON.stringify(book);
console.log(test); //打印值:""JS大神进阶记"" var test2 = JSON.stringify(book,function(key,value){
console.log(value) ; //JS大神进阶记 });
  • parse(): 把符合规范的字符串转为对象
    //接着上面的样例;

  var parseJSON = JSON.parse(person_str);     //把符合书写规范的字符串转为对象

  console.log(parseJSON);    //打印值:  Object {name: "CRPER", age: 24, Interesting: Array[2]}

总结

JSON的值能够表现为这么多种:

1. string

2. number

3. object

4. array

5. true

6. false

7. null