JSON:結構化數據格式

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

  語法java

  

//javascript

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

//JSON

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

 

因爲JSON是數據格式,因此沒有變量的概念,同時鍵值必須使用雙引號。編程

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

  早期的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相同
相關文章
相關標籤/搜索