JSON:結構化數據格式


  JSON是javascript的子類,也是作為更好的互聯網傳輸結構化數據格式逐漸取代XML,因此要理解JSON,重要的是理解它是一種數據格式,不是一種編程語言。

  語法

  

//javascript

var object = {
    "name":"lihua",
    "age":"20",
    "gender":undefined
}

//JSON

{
    "name":"lihua",
    "age":"20",
}

 

由於JSON是數據格式,所以沒有變量的概念,同時鍵值必須使用雙引號。

  JSON的stringify與parse方法(序列化與解序)

  早期的JSON解析器基本上都使用了eval()函數,但是可能會執行惡意代碼(eval函數可以解析,解釋並返回js對象。ECMASCRIPT 5再后來規范了JSON行為,定義了全局對象JSON,並添加了兩個JSON方法:stringify()和parse()。

  

var person = {
    name:"lihua",
    age:"18",
    hobby:[
        "basketball",
        "badminton"
    ],
    action:function(){
         alert("help")
    }  
}

var jsonText = JSON.stringify(book)
//{"name":"lihua","age":"18","hobby":["basketball","badminton"]}

var jsText = JSON.parse(jsonText);

 在序列化時,函數與原型對象成員都將被忽略(JSON只接受兩種復雜類型對象與數組),值為undefined的屬性值也會被跳過。

 序列化選項與結構化選項

  

var person = {
    name:"lihua",
    age:"18",
    hobby:[
        "basketball",
        "badminton"
    ]
}
//stringify第二個參數為過濾項
var jsonText1 = JSON.stringify(person,["name","hobby"]);
//{"name":"lihua","hobby":["basketball","badminton"]}
var jsonText2 = JSON.stringify(person,function(key,value){
    switch(key){
        case "name":
            return "zhoujielun";
        case "age":
            return 17;
        case "hobby":
            return value.join(",")
        default:
            return value
    }
});
//{"name":"zhoujielun","age":17,"hobby":"basketball,badminton"}

//stringify第三個參數為字符串縮進
var jsonText3 = JSON.stringify(person,null,"--");
// {
//     --"name": "lihua",
//     --"age": "18",
//     --"hobby": [
//     ----"basketball",
//     ----"badminton"
//     --]
// }

//JSON.parse與stringify相同

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM