zoukankan      html  css  js  c++  java
  • json相关的一些用法

    一. json可以表示3种类型的值:

      简单值 、 对象、 数组 
     
    表示对象时:》1. 没有变量的概念 ,所以不用申明变量
                       》2. 没有末尾结束时的分号 ;
                       》3. 对象属性并需要加 双引号 
                       》4. 同一对象中绝不能出现两个同名属性
     
    二.json 的两个方法:
     
        JSON.stringify (object); , JSON.parse (object);
        在简单情况下,以上两个方法,用于把javascript对象序列化, 和把JSON字符串解析为原生javascript的值
        eg:执行如下代码,会在浏览器显示 {"title":"A book title","authors":["ren jing"],"edition":3,"year":2011} 此结果
     1     var book = {
     2         "title" : "A book title",
     3         "authors" : [
     4             "ren jing"
     5         ],
     6         edition : 3,
     7         year : 2011
     8     };
     9     var jsonText = JSON.stringify(book);
    10     document.write(jsonText);

         1. 对于详细序列化 javascript 使用 JSON.stringify (object )时 ,还可再传入两个参数;

        》  第一个参数 为过滤器 ,可以为数组:

     1 var jsonText = JSON.stringify(book,["title","edition"]); 

          也可以为函数,当传入的为函数时,传入的函数接收两个参数,属性名和属性值:

     1     var jsonText = JSON.stringify(book,function(key,value){
     2         switch(key){
     3             case "authors":
     4                 return value.join(",");
     5             case "year":
     6                 return 5000;
     7             case "edition":
     8                 return undefined;
     9             default:
    10                 return value;
    11         }
    12     });
    13     alert(jsonText);

       运行结果为:{"title":"A book title","authors":"ren jing","year":5000}

       》第二个参数是一个选项,表示是否在JSON字符串中保留缩进,用于控制结果中的缩进和空白符。

          若这个参数是一个数值,那它表示每个级别缩进的空格数(最大缩进空格数为10,所有大于10的数会自动转换为10):

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

          若缩进参数是一个字符串而非数值,则这个字符串将在JSON字符串中被用作缩进字符(不再使用空格,最大限制依然为10):

     1 var jsonText = JSON.stringify(book,null,"- -"); 

      有时候我们可以定义一个toJSON()方法,返回其自身的JSON数据格式,更好的进行自定义序列化的需求。

      对于序列化对象的顺序,我们应该注意的是:

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

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

               (3)对于第(2)步返回的每个值进行相应的序列化。

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

      2.对于解析json数据,也可以接受另一个参数,该参数是一个函数:

     1     var book = {
     2         "title" : "A book title",
     3         "authors" : [
     4             "ren jing"
     5         ],
     6         edition : 3,
     7         year : 2011,
     8         releaseDate : new Date(2015,07,1)
     9     };
    10     var jsonText = JSON.stringify(book);
    11     var bookCopy = JSON.parse(jsonText,function(key,value){
    12         if(key =="releaseDate"){
    13             return new Date(value);
    14         }else{
    15             return value;
    16         }
    17     })
    18     alert(bookCopy.releaseDate.getFullYear());

           通过添加releaseDate属性,通过序列化将数据序列化为有效的JSON字符串后 ,再进行解析,运行结果为:2015

         

        (将此内容作为自己的个人笔记,参考来源于javascript高级程序设计 第三版)

  • 相关阅读:
    几个容易混淆的集合类
    ajax操作时用于提高用户体验的两段备用代码
    word-wrap和word-break的区别
    清除MAC OS X上的流氓软件
    Windows Azure IP地址详解
    实现跨云应用——基于DNS的负载均衡
    Windows Azure虚拟机和云服务实例计费方式更新
    证明你是你——快速开启Windows Azure多重身份验证
    Windows 10 L2TP 809错误
    新版Microsoft Azure Web管理控制台
  • 原文地址:https://www.cnblogs.com/redjoy/p/4663548.html
Copyright © 2011-2022 走看看