美文网首页
JSON语句

JSON语句

作者: duJing | 来源:发表于2017-01-04 16:37 被阅读51次
    一、语法
        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

    相关文章

      网友评论

          本文标题:JSON语句

          本文链接:https://www.haomeiwen.com/subject/bxzovttx.html