• javascript跳跃式前进(3)


    前言

    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

  • 相关阅读:
    算法图解
    Cairo graphics tutorial
    远程对象调用
    异步和多线程的关系
    jQuery调用api
    GTK# tutorial
    DLT
    protobuf入门笔记
    PDO讲解
    数据库练习——分页查询
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7185748.html
Copyright © 2020-2023  润新知