zoukankan      html  css  js  c++  java
  • JSON对象

     JSON对象的两个方法:

    JSON.stringify() --- 将js对象序列化为JSON字符串

    JSON.parse()   --  将JSON字符串解析为js对象 

     序列化js对象时候,所有函数及原型会被忽略,值为undefined的任何属性也会被跳过。结果中最终都是有效的JSON数据类型的实例属性。

    JSON.stringify参数解析

    原型:JSON.stringify(js字符串, 过滤数组或函数, 字符串缩进)

    1.过滤数组

    总结:返回的结果中,只会包含过滤数组中的属性(ps:这属性在原js字符串中存在,且值被定义。换句话说,这属性在被序列化之后存在于JSON字符串中)

              即1.若过滤数组中存在属性aaa,但是被转化的js字符串中aaa:undefined,则过滤后的返回值中没有aaa属性

                 2.若过滤数组中存在属性bbb,但是被转化的js字符串中没有bbb属性,则过滤后的返回值中没有bbb属性

              总结上述两点:JSON字符串中不存在undefined属性值

    2.过滤函数

    var book={
        "title": "test",
        "authors": [
            "test1",
            "test2"
        ],
        edition: 3,
        year: 2012
    };
    
    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;
        }
    });

    说明:1.过滤函数有两个参数:属性名 和 属性值

              2.若函数返回undefined,那么对应的属性会被忽略掉

              3.函数中一定要提供default项,因为第一次调用这个函数过滤器时,传入的属性名是一个空字符串,属性值是js字符串对象(book)

    3.字符串缩进

    var book={
        "title": "test",
        "authors": [
            "test1",
            "test2"
        ],
        edition: 3,
        year: 2012
    };
    
    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;
        }
    },4);

    将上述第三个参数改为: '* ** *',结果为:

    说明:

    1. 该参数若为数值,则表示每个级别缩进的空格数
    2. 最大缩进空格数为10,若设置的参数数值大于10,会被自动转化为10
    3. 若使用字符串,则该字符串将被用做缩进字符,而不再使用空格开进行缩进

  • 相关阅读:
    根据地球上两个坐标点,计算出距离
    判断一个日期距离今天是不是过了指定的天数
    二维码
    修改、删除 触发器
    sql server 数据加密
    C#下载apk文件
    java 判断一个字符串是否包含某个字符串中的字符
    CenterOS 设置静态IP
    VMware 克隆 CenterOS 虚拟机
    VMware 安装CenterOS
  • 原文地址:https://www.cnblogs.com/xnn1993/p/7739759.html
Copyright © 2011-2022 走看看