码迷,mamicode.com
首页 > 编程语言 > 详细

《javascript高级程序设计》笔记(二十)

时间:2014-10-25 00:48:22      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   ar   使用   java   strong   sp   

JSON

JSON是javascript的一个严格的子集,利用了javascript中的一些模式来表示结构化数据。JSON是在javascript中读写结构化数据的更好的方式。因为可以把JSON传给eval(),不用创建DOM对象。

(一)语法

 简单值: 字符串、数值、数组和null,不支持undefined。

 对象   :一组无序的键值对,可以是简单值,也可以是复杂数据类型的值。

 数组   :一组有序的值的列表,可以通过数值索引来访问其中的值,数组的值可以是任意类型。

 

1.简单值

字符串必须使用双引号

2.对象

{
      "name" = "Nicolas",
      "age" = 29,
"school": {
“name”:"Merrimack College",
"location":"North"
} }

没有声明变量

没有末尾的分号

对象的属性值必须加双引号

属性值可以是简单值,可以是复杂类型值

3.数组

 没有变量和分号

 

(二)解析与序列化

可以把JSON数据结构解析为有用的javascript对象。

1.JSON对象

 支持:IE8+  Firefox3.5+   Safari 4+   Chrome   Opera 10.5+ 较早版本可以使用一个shim。

stringify()    把javascript对象序列化为JSON字符串,不包含任何空格字符和缩进。

parse方法    把JSON字符串解析为原生javascript值。

 

2.序列化操作

 JSON.stringify()还可以接受两个参数,第一个参数是过滤器,可以是数组或函数,第二个参数表示是否在JSON字符串保留缩进。

 

①过滤结果

 如果过滤器参数是数组,结果只保留数组中的属性。

如果第二个参数是函数,传入的函数接收两个参数,属性名和属性值。如果函数返回undefined,相应属性会被忽略。

 

        var jsonText = JSON.stringify(book, function(key, value){
            switch(key){
                case "authors":
                    return value.join(",")
                 
                case "year":
                    return 5000;
                    
                case "edition":
                    return undefined;
                    
                default:
                    return value;
            }
        });

 

②字符串缩进

第三个参数控制缩进和空白符,如果是数字,表示每个级别缩进的空格数,所有大于10的值会转换为10。 

 var jsonText = JSON.stringify(book, null,4);

如果传入的不是数值,这个字符串会在JSON字符串被用作缩进字符串,可以设置为制表符或两个短划线之类个数大于10的字符会转换为10个。

 

③toJSON方法

将javascript的data对象转换为ISO 8601日期字符串。

        var book = {
                       "title": "Professional JavaScript",
                        "authors": [
                            "Nicholas C. Zakas"
                        ],
                        edition: 3,
                        year: 2011,
                        toJSON: function(){
                            return this.title;
                        }
                   };

如果存在toJSON()方法切能通过它取得有效的值,则调用该方法,否则返回对象本身。

如果提供了第二个参数,应用这个过滤器。传入函数过滤器的值是第一步返回的值。

对第二步返回的值进行相应的序列化。

如果提供了第三个参数,执行相应的格式化。

 

3.解析选项

 JSON.parse()可以接受另一个参数,该参数是函数,在键值对上调用。如果还原函数返回undefined,表示从结果删除相应的键,如果返回其他值,泽尔将该值插入到结果。将日期字符串转化为Date对象时经常要用。

        var bookCopy = JSON.parse(jsonText, function(key, value){
            if (key == "releaseDate"){
                return undefined;
            } else {
                return value;
            }
        });

 

《javascript高级程序设计》笔记(二十)

标签:style   blog   color   io   ar   使用   java   strong   sp   

原文地址:http://www.cnblogs.com/surahe/p/4048172.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!