• 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. 若使用字符串,则该字符串将被用做缩进字符,而不再使用空格开进行缩进

  • 相关阅读:
    DataGrid
    TreeGrid
    获取选中内容
    requirejs——config
    C# 字符串与字节数组相互转换
    并发编程
    关于 warning CS0659:“***”重写Object.Equals(object o)但不重写Object.GetHashCode()
    使用C#书写SQLite数据库增删改查语句(以及插入byte[]时遇到的问题总结)
    TortoiseSVN/Git覆盖图标失效的解决方案
    C#Question:“XXX”的重载均与“System.Threading.WaitCallback”不匹配。
  • 原文地址:https://www.cnblogs.com/xnn1993/p/7739759.html
Copyright © 2020-2023  润新知