zoukankan      html  css  js  c++  java
  • 20.JSON

    JSON是javascript的一个子集,利用js中的一些儿模式来表示结构化数据。不是只有javascript才使用JSON,JSON是一种数据格式,很多编程语言都有针对JSON的解析器和序列化器。

    JSON的语法可以表示一下三种类型的值:

    • 简单值:可以在JSON中表示字符串、数值、布尔值和null ; 但不支持js中的特殊值 undefined 

    • 对象:表示的是一组有序的键值对儿

    • 数组:表示的是一组有序的值得列表


    简单值:

    -数值(整数或者浮点数 

    -字符串(必须在引号里)

    -布尔值

    -null

    对象值:

        javascript中的对象字面量:

    var person = {
        name:"Zhou",
        age:29
    };

    json中的对象要求必须给属性加引号,如下:

    {
        "name":"Zhou",
        "age":29
    }

    JSON中没有变量的概念,其次末尾不用分号。属性的值可以是简单值,也可以是复杂类型值,可以在对象中嵌入对象:

    {
        "name":"Zhou",
        "age":29,
        "school":{
             "name":"XXX College",
             "address":"XXXXXXXXXX"
        }
    }


    数组:

    JSON数组采用的及时JS里的数组字面量形式

    [ 25, "age", true ]

    同样没有变量和分号。



    JSON对象有两个方法:stringify() 和 parse(),这两个方法 分别用于把javascript对象序列化为JSON字符串解析为javascript值。

    var people = { 
        name:"小明",
        age:25,
        friends:[
              "小红",
              "小兰"
        ]   
    }
    var json = JSON.stringify(people);
    alert(json);  
    
    // 返回结果:{"name":"小明","age":25,"friends":["小红","小兰"]}

    上面例子JSON.stringify()把一个javascript对象序列化为一个JSON字符串,然后将它保存在变量json中。默认请款下,输出的JSON字符串不包含任何空格字符或缩进。

    在序列化javascript对象是,所有函数及原型成员都会被有意忽略,值为undefined的任何属性也会被跳过。


    将JSON字符串直接传递给JSON.parse()就可以得到相应的javascript的值。




    JSON除了序列化javascript对象外,还可以接受多个参数。

    第二个参数可以是个数组,也可以是函数:

    var people = { 
        name:"小明",
        age:25,
        friends:[
              "小红",
              "小兰"
        ]   
    }
    var json = JSON.stringify(people,["name","friends"]);
    alert(json);  
    
    //返回结果:{"name":"小明","friends":["小红","小兰"]}


    如果第二个参数是函数:

            var people = { 
                    name:"小明",
                    age:25,
                    friends:[
                          "小红",
                          "小兰"
                        ]   
            }
            var json = JSON.stringify(people,function(key,value){
                switch(key){
                    case "name": 
                        return "小军";
                    case "age": 
                        return 20;
                    case "friends": 
                        return null;
                    default: 
                        return value;
                }
            });
            alert(json);
            
            //返回结果:{"name":"小军","age":20,"friends":null}


    第三个参数用于控制结果中的缩进和空白符。如果这个参数是一个数值,那它表示缩进的空格数,最大缩进空格数为10,所有大于10的值都会自动转换为10。只要传入有效的数值,结果字符串就会包含换行符。

    如果缩进参数是字符串而非数值,则这个字符将在JSON字符串中被用作缩进字符,缩进字符串最长不能超过10个字符长,超过10个结果中将出现前10个字符。

            var people = {         
                name:"小明",
                age:25,
                friends:[
                      "小红",
                      "小兰"
                ]   
            }
            var json = JSON.stringify(peopl,null,10);
            //var json = JSON.stringify(peopl,null,"hello");
            alert(json);


     






  • 相关阅读:
    Spring boot 使用多个RedisTemplate
    Spring boot 连接Redis实现HMSET操作
    Spring boot 工具类静态属性注入及多环境配置
    向量空间模型(Vector Space Model)的理解
    双数组Trie树中叶子结点check[t]=t的证明
    谈谈我对隐马尔可夫模型的理解
    Information Retrieval 倒排索引 学习笔记
    朴素贝叶斯文本分类简单介绍
    Python Thrift 简单示例
    迭代器模式(Iterator)
  • 原文地址:https://www.cnblogs.com/afighter/p/5447991.html
Copyright © 2011-2022 走看看