zoukankan      html  css  js  c++  java
  • JSON

    一、JSON的语法可以表示三个类型值:1.简单值 2.对象 3. 数组

    二、JSON对象的表示方式

    {
           "name" : "Lee",
           "age" : 100
           }

    ps:与JavaScript的对象字面量相比,JSON对象有三个不一样:1.JSON没有声明变量。 2.没有末尾的分号。3.对象的属性必须加双引号。

    三、JSON数组的表示方式

    [
         {
             "title":"www",
             "authors": 1
                        },
          {
              "title":222,
               "authors":2
           },
           {
                "title":"ccc",
                "authors":3
             }
      ]

      var box = '[{"name":"a","age":1},{"name":"b","age":2}]';
      alert(box);//[{"name":"a","age":1},{"name":"b","age":2}]

    四、JSON对象转换成JS对象: parse()方法

    var json = JSON.parse(box);
    alert(json);//[object object],[object object]
    alert(box[0].title);

    五、JS对象转换成JSON对象:stringify()

    var box = [{name:"a",age:1},{name:"b",age:2}];  //JS对象
    var json = JSON.stringify(box,['name','age'],4);
    alert(box);
    var box1 = [
                        {
                            name:"a",
                            age:1,
                            height:160
                        },
                        {
                            name:"b",
                            age:2,
                            height:160
                        }
                   ];
    
                    var json = JSON.stringify(box1);
                    console.log(json); //[{"name":"a","age":1,"height":160},{"name":"b","age":2,"height":160}]

    stringify()有三个参数:1.过滤器 2.数组/函数 3.要JSON字符串中保留的缩进数

      四、1.stringify()第二个参数,如果是数组,返回的是数组中的属性。

    var json = JSON.stringify(box, ['name', 'age']);
    console.log(json);//[{"name":"a","age":1},{"name":"b","age":2}]

     四、1.第二个参数是函数:此函数有两个参数分别是key(对应json对象的属性,value对应属性的值)。根据属性(键)名可以知道应该如何处理要序列化的对象中的属性。属性名只能是字符串,而值并非键值对儿结构的值时,键名可以是空字符串。

    var json2 = JSON.stringify(box,function(key,value){
                if(key == "height"){
                  return value + "cm";
              }
                 else{
                        return value;
                      }
              });
             console.log(json2);//[{"name":"a","age":1,"height":"160cm"},{"name":"b","age":2,"height":"160cm"}]

    PS:火狐3.5和3.6在最初支持JSON的时候stringify方法有个小BUG,执行function会出错
    PS:现在火狐的版本是17.0,所以3.5和3.6的市场份额可以忽略不计,没必要单独兼容

    四、3.字符串缩进:第三个参数用于控制结果中的缩进和空白符。
      参数是一个数字,它表示每个级别缩进的空格数。

    var json3 = JSON.stringify(box, null, 4);
               alert(json3); 

    参数是一个字符串而非数值,这个字符串将在JSON字符串中被用作缩进字符(不再使用空格)。在使用字符串的情况下,可以将缩进字符设置为制表符,或者两个短划线之类的任意字符。

    var json4 = JSON.stringify(box, null, "--");
                alert(json4);

    五、toJSON方法:使用toJSON方法实现stringify()不能实现的功能,toJSON()方法可以返回任何/指定序列化的值。

    var test2 = [{
                    name:"cc",
                    age:26,
                    height:180,
                    toJSON:function(){
                        return this.name;
                    }
                },
                {
                    name:"bb",
                    age:28,
                    height:190,
                    toJSON: function () {
                        return this.name + "," + this.age;
                    }
                },{
                    name:"aa",
                    age:30,
                    height:140,
                    toJSON:function (){
                        return this.height;
                    }
                }]
                var json5 = JSON.stringify(test2);
                console.log(json5); //["cc","bb,28",140]
                
    
                var book1 = {
                    "title":"mmms",
                    "authors":["ccc"],
                    edition:3,
                    year:2012,
                    releaseDate: new Date(2013, 11, 1)
                };
                var jsonText = JSON.stringify(book1);
                var bookCopy = JSON.parse(jsonText, function(key, value){
                    if(key == "releaseDate"){
                        return new Date(value);
    
                    }else{
                        return value;
                    }
                });
                console.log(bookCopy.releaseDate.getFullYear()); //2013
    
                var json = '[
                                {"title" : "a", "num" : 1},
                                {"title" : "b", "num" : 2}
                            ]';    
                var box = JSON.parse(json, function (key, value) {
                        if (key == 'title') {
                            return 'Mr.' + value;
                        } else {
                            return value;
                        }
                    });
                alert(box[1].title);

    --------------------------------------------end-------------------------------------

  • 相关阅读:
    SQL Server 之 内部连接
    SQL Server 之 子查询与嵌套查询
    ASP.NET MVC5高级编程 之 视图
    ASP.NET MVC5高级编程 之 路由
    jQuery返回顶部实用插件YesTop
    jQuery照片墙相册
    js功能实现的特效--距离新年还有多少天
    圣杯布局小结
    等高分栏布局小结
    jQuery设置内容和属性方
  • 原文地址:https://www.cnblogs.com/wine/p/5232112.html
Copyright © 2011-2022 走看看