美文网首页
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