JSON語句

一、語法
    1.JSON 的語法可以表示以下三種類型的值
        ①簡單值:使用與JavaScript 相同的語法,可以在JSON 中表示字符串、數值、布爾值和null。但JSON 不支持JavaScript 中的特殊值undefined。
        ②對象:對象作為一種復雜數據類型,表示的是一組無序的鍵值對兒。而每個鍵值對兒中的值可以是簡單值,也可以是復雜數據類型的值。
        ③數組:數組也是一種復雜數據類型,表示一組有序的值的列表,可以通過數值索引來訪問其中的值。數組的值也可以是任意類型——簡單值、對象或數組。
        eg: {
                // 簡單值
                "name" : "yang",    // 字符串
                "age" : 20,         // 數字
                "isBoy" : false,
                "wife"  : null,
                // 對象
                "sports" : {
                    "ball" : "pingpong",
                    "water" : "swimming"
                },
                // 數組
                "fruits" : ["apple", "pear", "banana"]
            }
二、解析與序列化
    1.JSON對象
        // 將對象轉換為字符串
        var json = JSON.stringify(person);      // object ==> JSON
        // alert(json); 
        var obj = JSON.parse(json);             // JSON ==> object
        // alert(obj);      // [object Object]
    2.序列化選項
        ①過濾結果
            // 第一種:字符串形式
            // JSON.stringify()的第二個參數是數組或函數,其中包含兩個字符串,返回結果僅返回name和fruits屬性
            var json = JSON.stringify(person, ["name", "fruits"]);      // object ==> JSON
            alert(json);    // {"name":"yang","fruits":["apple","pear","banana"]}
            // 第二種:函數形式
            var json = JSON.stringify(person, function (key, value) {
                switch(key) {
                    case "name":
                        return "xiao yang"; // 將name的值修改
                    case "fruits":
                        return value.join("|"); // 將fruits的項用|連接
                    default:
                        return value;
                }
            });
            alert(json);
        ②字符串縮進,JSON.stringify()方法的第三個參數用于控制結果中的縮進和空白符
            // 用---連接
            var json = JSON.stringify(person, ["name", "fruits"], "---");       // object ==> JSON
            alert(json);
        ④toJSON:可以自定義返回的數據,其實是過濾器的一種補充。
            var person = {
                // 簡單值
                name : "zhang",
                toJSON : function () {
                    return this.name;
                }
            }
            var json = JSON.stringify(person);      // object ==> JSON
            alert(json);        // "zhang"
        ⑤解析選項: JSON.parse()方法也接受兩個參數
                    第一個為json字符串
                    第二個為還原函數,和json.stringifY的第二個參數過濾器相似
                eg: var person = {
                        // 簡單值
                        name : "zhang",
                        age : 20,
                        releaseDate: new Date(2011, 11, 1)
                    }
                    var jsonText = JSON.stringify(person);
                    var bookCopy = JSON.parse(jsonText, function(key, value){
                        if (key == "releaseDate"){
                            return new Date(value);     // 將releaseDate的值轉化為對象
                        } else {
                            return value;
                        }
                    });
                    alert(bookCopy.releaseDate.getMonth());     // 11
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容