• 2020/2/7学习总结


    今天学习了关于JSON的一些相关知识。

    一、什么是JSON

        JSON全称JavaScript Object Notation(JS对象标记),是一种轻量级的数据交换格式。它相对于XML更小、更易于人阅读和编写,同时也易于机器解析和生存,并有效地提高网络传输效率。

    二、JSON数据格式

        1、整体结构

            String json1 = {"name" : "Jack","sex" : "男"}

            String json2 = [{"name" : "Jack","sex" : "男"},{"name" : "Vincent","sex": "男"}]

        2、JSON对象------左花括号({ )开头,右花括号(})结尾,一个键值对为一个属性

            Json对象结构:{key1:value1,key2:value2...}

                    a)、key的数据类型:字符串

                    b)、value的数据类型:字符串、数值、null、json数组[]、json对象{}

        3、JSON数组------类似数组或序列

            JSON数组结构:[value1,value2......]

                    a)、value的数据类型:字符串、数值、null、json数组[]、json对象{}

        语法规则:

            1)、数据在名称/值中,为一个键值对,表示的是对象的属性

            2)、除了最后一个属性或对象,每个属性,每个对象都必须用逗号(,)分隔

            3)、花括号({})保存对象,一对花括号表示一个对象

            4)、方括号([])保存数组,一对方括号表示一个数组

    三、JSON的语法

        1)、JSON对象

            JSON对象是在花括号中书写的,对象中可以包含多个属性,多个属性之间用逗号(,)隔开。

         格式:{"name":"Vincent","sex":"男"}

        2)、JSON 对象的属性

            JSON对象属性的书写格式为:名称:值,是一个键值对。官方规定,在JSON字符串中,JSON的Key值必须用双引号标起来,而不是单引号或无引号。

         格式:"name":"Vincent"

        3)、JSON数组

            JSON对象中可以包含多个数组,用方括号([])将对象或属性包含在其中:
    { "user":[{ "name":"Vincent" , "sex":"男" }, { "name":"Jack" , "sex":"男" ,{ "name":"Tom" , "sex": "男" }]}

      

    4)、JSON中使用JavaScript语法

            通过JavaScript,创建一个JSON对象数组

    var user = [{ "name":"Vincent" , "sex":"男" },
    { "name":"Jack" , "sex":"男" },
    { "name":"Tom" , "sex": "男" }];
     

    四、JSON的解析

        1、转换关系

            服务端:Java对象(包括集合) → JSON字符串

            客户端:JSON字符串 → Java对象(包括集合)  or  JSON字符串 → JS对象

        注意:{"name":"Vincent"}该语句表示的是JSON字符串,而{name:"Vincent"}表示的是JSON对象。前者无法直接输出。

    2、JSON字符串 和 JSON对象的区别

                JSON字符串:仅仅是一个符合JSON格式的字符串,无法获取其属性值,类型为String

                JSON对象:一个符合JS对象的JSON实例化对象,可以通过指定属性获取其值,类型为Object

                 

        3、JSON字符串 和 JSON对象的转换

            a)、JSON字符串 转 JSON对象  ------  调用JSON.parse()方法

                 

    <script type="text/javascript">
    // json字符串
    var user='{"name":"zzy","age":"19"}';
    //json字符串强转为json对象
    var userObj=JSON.parse(user);
    alert(userObj.name);
    
    </script>

            b)、JSON对象 转 JSON字符串  ------  调用JSON.stringify()方法

                    

    <script type="text/javascript">
    //json对象
    var userObj={"name":"zzy","age":"19"};
    //json对象强转成json字符串
    var user=JSON.stringify(userObj);
    alert(user);
    </script>

    五、JSON对象 和 JSON字符串的语法规范

            1、JSON对象语法规范:

    <script type="text/javascript">
    var user1={"name":"zzy","age":"19"};
    var user2={"name":"zzy","age":"19"};
    alert(user1==user2);
    
    </script>

    结果:

    原因:但实际上,我们每创建一个对象,都会创建一个存储区给对象,每个对象的实际地址在栈中是不一样的,所以两个对象之间彼此不相等。

    2、JSON字符串语法规范

         JSON字符串其实就是一个普通的字符同,不同的是他满足JSON的语法规范而已。官方规定JSON字符串的键值对必须都包括在冒号("")之中,这是一个用于识别JSON语句的语法规范。当字符串在没有反序列化时就是一个普通的字符串,所以加不加冒号都无所谓,但是当使用JSON.stringify()方法时,表示的是将JSON字符串序列化为JSON对象,此时如果字符串不符合JSON的语法规范则会报错。



  • 相关阅读:
    安装Php时候报错信息:virtual memory exhausted: Cannot allocate memory (不能分配内存)
    putty保持连接不自动段开
    利用iptables将本地的80端口请求转发到8080,当前主机ip为192.168.1.1,命令怎么写?
    linux上大量tcp端口处于TIME_WAIT的问题
    cacti出现snmp error
    洛谷3672:小清新签到题——题解
    BZOJ3040:最短路——题解
    洛谷4230:连环病原体——题解
    洛谷3934:Nephren Ruq Insania——题解
    洛谷3932:浮游大陆的68号岛——题解
  • 原文地址:https://www.cnblogs.com/wangzhaojun1670/p/12275616.html
Copyright © 2020-2023  润新知