js-json

###1. json是一种与语言无关的数据交换的格式,其主要作用:

  1)使用ajax进行前后台数据交换

  2)移动端与服务端的数据交换

###2.json有三种类型:

  1)对象:{"key1":obj,"key2":obj,"key3":obj...}

    例如:user对象 用json数据格式表示

    {"username":"zhangsan","age":28,"password":"123","addr":"北京"}

  2)数组:[obj,obj,obj...]

    List<Product> 用json数据格式表示

    [{"pid":"10","pname":"小米4C"},{},{}]

  3)简单值: 字符串·数值·布尔值和null

注意:对象格式和数组格式可以互相嵌套

注意:json的key是字符串  json的value是Object

 

###3. json数据的解析与序列化

  1)    JSON对象 转 JS对象 (解析)

    js:    JSON.parse()

    jQ:   $.parseJSON()  /  $.parse()

  2) JS对象转JSON对象(序列化)

    js: JSON.stringify(obj)

    jQ:$.stringify(obj)

    stringify()含两个参数,第一个参数是一个过滤器,可以使一个数组或函数;第二个参数是一个选项,表示是否在JSON字符串中保留缩进

      eg:

        var book =  {

          "title"  : "abc",

          "edition" : 3,

          "year" : 2011

        }

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

        结果为:  {"titile":"abc","year":2011}

    若第二个参数为函数,则该函数需接受两个参数,属性(键)名和属性值    即key 和value

      eg:

        var book =  {

          "title"  : "abc",

          "edition" : 3,

          "abc": [

            "abc 123"

          ]

        }

        var jsonText = JSON.stringify(book,function(key,value){

          switch(key){

            case "title":

              return undefined;

            case "edition":

              return 20;

            case "abc":

              return value.join(",")        //join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。

            defalut:  

              return value;

          }          

        });

        输出结果为:{"edition":20,"abc":"abc 123"}

   3.)字符串缩进  

      JSON.stringify()方法的第三个参数用于控制结果中的缩进和空白符,表示的是每个级别缩进的空格数或指定字符作为缩进符。   作用是方便程序员阅读

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

          输出结果:{

                 "titile":"abc",

                 ......

                 "abc":[

                   "abc 123"

                 ]

               }

    4.)toJSON()方法

      原生Date对象有一个该方法,能将JavaScript的Date对象自动转换成ISO 8601日期字符串  

    

posted @ 2019-03-09 16:34  He_John  阅读(351)  评论(0)    收藏  举报