JSON
JSON是Javascript对象标记法
JSON是一种轻量级的数据交换格式
JSON具有自我描述且易于理解
为什么使用JSON:因为JSON格式仅仅是文本,它能够轻松地在服务器浏览器之间传输,并用作任何编程语言的数据格式。
JavaScript提供内建函数把以JSON格式写的字符串转换为JavaScript对象:
JSON.parse()
因此,如果以JSON格式从服务器接收数据,那么可以像JavaScript对象一样使用它。
JSON语法规则
(1)数据在名称/值对中
(2)数据由逗号分割
(3)花括号容纳对象
(4)方括号容纳数组
"name":"mez"  //(1)JSON名称需要双引号。而JavaScript名称不需要。
JSON格式几乎等同于JavaScript对象
在JSON中,键必须是字符串,由双引号包围
而在JavaScript中,键可以是字符串、数字或标识名称:
name:"mez"      //javascriptJSON值
在JSON中,值必须是以下数据类型之一:
字符串、数字、对象(JSON对象)、数组、布尔、null
而在JavaScript中,不仅包括上述类型,还包括:
函数、日期、undefined
在JSON中,字符串必须由双引号编写。
而在JavaScript中,字符串可以由双引号和单引号编写。
JSON使用JavaScript语法
因为JSON语法由JavaScript对象标记法衍生而来,所以很少需要其他额外的软件来处理JavaScript中的JSON。
通过JavaScript,可以创建对象并向其分配数据:
var person =  { name : "mez", age : 12, city : "Shanghai" };可以使用person.name访问JavaScript对象,或者person["name"]
可以直接对JavaScript进行赋值来修改数据
person.name = "Steve Jobs";
//或
person["name"] = "Steve Jobs";JSON文件的文件类型是“.json”
JSON文本的MIME类型是“application/json”
JSON.parse()
JSON的常规用途是同web服务器进行数据传输。
在从web服务器接收数据时,数据永远是字符串
通过JSON.parse()解析数据,这些数据会成为JavaScript对象。
<!--
 * @Author: RealRoad1083425287@qq.com
 * @Date: 2023-03-16 16:19:58
 * @LastEditors: Mei
 * @LastEditTime: 2023-03-20 20:23:12
 * @FilePath: \vscode\请求方式\测试.html
 * @Description: 
 * 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button id="mypost">post1</button>
    <script>
        // mypost.onclick=function(){
        //     var xhr=new XMLHttpRequest()
        //     xhr.open("POST","http://localhost:3000/users")
        //     xhr.onload=function(){
        //         if(xhr.status===200){
        //             console.log(JSON.parse(xhr.responseText))
        //         }
        //     }
        //     xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
        //     xhr.send(`username=lisi&password=4578`)
        // }
        // mypost.onclick = function(){
        //     var xhr = new XMLHttpRequest()
        //     xhr.open("POST","http://localhost:3000/users")
        //     xhr.onload = function(){
        //         if(/^2\d{2}$/.test(xhr.status)){
        //             console.log(JSON.parse(xhr.responseText))
        //         }
        //     }
        //     //提交 信息
        //     //post name=kerwin&age=100
        //     //post {"name":"kerwin"}
        //     xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded") //name=kerwin&age=100
        //     xhr.send(`username=shanzhen&password=456`)
            // xhr.setRequestHeader("Content-Type","application/json") //name=kerwin&age=100
            // xhr.send(JSON.stringify({
            //     username:"zhuang",
            //     password:"789"
            // }))
        // }
        var obj=JSON.parse(`{"name":"mez","age":17}`)
        console.log(obj.name)
        console.log(obj["age"])
    </script>
</body>
</html>
<!--
 * @Author: RealRoad1083425287@qq.com
 * @Date: 2023-03-16 16:19:58
 * @LastEditors: Mei
 * @LastEditTime: 2023-03-20 20:28:19
 * @FilePath: \vscode\请求方式\测试.html
 * @Description: 
 * 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button id="mypost">post1</button>
    <p id="demo"></p>
    <script>
        // mypost.onclick=function(){
        //     var xhr=new XMLHttpRequest()
        //     xhr.open("POST","http://localhost:3000/users")
        //     xhr.onload=function(){
        //         if(xhr.status===200){
        //             console.log(JSON.parse(xhr.responseText))
        //         }
        //     }
        //     xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
        //     xhr.send(`username=lisi&password=4578`)
        // }
        // mypost.onclick = function(){
        //     var xhr = new XMLHttpRequest()
        //     xhr.open("POST","http://localhost:3000/users")
        //     xhr.onload = function(){
        //         if(/^2\d{2}$/.test(xhr.status)){
        //             console.log(JSON.parse(xhr.responseText))
        //         }
        //     }
        //     //提交 信息
        //     //post name=kerwin&age=100
        //     //post {"name":"kerwin"}
        //     xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded") //name=kerwin&age=100
        //     xhr.send(`username=shanzhen&password=456`)
        // xhr.setRequestHeader("Content-Type","application/json") //name=kerwin&age=100
        // xhr.send(JSON.stringify({
        //     username:"zhuang",
        //     password:"789"
        // }))
        // }
        // var obj=JSON.parse(`{"name":"mez","age":17}`)
        // console.log(obj.name)
        // console.log(obj["age"])
        var text = '{"employees":[' +
            '{"firstName":"Bill","lastName":"Gates" },' +
            '{"firstName":"Steve","lastName":"Jobs" },' +
            '{"firstName":"Elon","lastName":"Musk" }]}';
        obj = JSON.parse(text);
        document.getElementById("demo").innerHTML =
            obj.employees[1].firstName + " " + obj.employees[1].lastName;
    </script>
</body>
</html>
来自服务器的JSON
可以使用Ajax请求从服务器请求JSON。
只要服务器的响应是用JSON格式编写的,就可以将字符串解析成JavaScript对象
<!--
 * @Author: RealRoad1083425287@qq.com
 * @Date: 2023-03-16 16:19:58
 * @LastEditors: Mei
 * @LastEditTime: 2023-03-20 20:34:28
 * @FilePath: \vscode\请求方式\测试.html
 * @Description: 
 * 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button id="mypost">post1</button>
    <p id="demo"></p>
    <script>
        // mypost.onclick=function(){
        //     var xhr=new XMLHttpRequest()
        //     xhr.open("POST","http://localhost:3000/users")
        //     xhr.onload=function(){
        //         if(xhr.status===200){
        //             console.log(JSON.parse(xhr.responseText))
        //         }
        //     }
        //     xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
        //     xhr.send(`username=lisi&password=4578`)
        // }
        // mypost.onclick = function(){
        //     var xhr = new XMLHttpRequest()
        //     xhr.open("POST","http://localhost:3000/users")
        //     xhr.onload = function(){
        //         if(/^2\d{2}$/.test(xhr.status)){
        //             console.log(JSON.parse(xhr.responseText))
        //         }
        //     }
        //     //提交 信息
        //     //post name=kerwin&age=100
        //     //post {"name":"kerwin"}
        //     xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded") //name=kerwin&age=100
        //     xhr.send(`username=shanzhen&password=456`)
        // xhr.setRequestHeader("Content-Type","application/json") //name=kerwin&age=100
        // xhr.send(JSON.stringify({
        //     username:"zhuang",
        //     password:"789"
        // }))
        // }
        // var obj=JSON.parse(`{"name":"mez","age":17}`)
        // console.log(obj.name)
        // console.log(obj["age"])
        // var text = '{"employees":[' +
        //     '{"firstName":"Bill","lastName":"Gates" },' +
        //     '{"firstName":"Steve","lastName":"Jobs" },' +
        //     '{"firstName":"Elon","lastName":"Musk" }]}';
        // obj = JSON.parse(text);
        // document.getElementById("demo").innerHTML =
        //     obj.employees[1].firstName + " " + obj.employees[1].lastName;
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function () {
            if (this.readyState == 4 && this.status == 200) {
                myObj = JSON.parse(this.responseText);
                document.getElementById("demo").innerHTML = myObj.name;
            }
        };
        xmlhttp.open("GET", "json_demo.txt", true);
        xmlhttp.send();
        // console.log()
    </script>
</body>
</html>

 
作为JSON数组
在对衍生数组的JSON使用JSON.parse()后,此方法将返回JavaScript数组,而不是JavaScript对象
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()  {
    if (this.readyState == 4 && this.status == 200) {
        myArr =  JSON.parse(this.responseText);
        document.getElementById("demo").innerHTML  = myArr[0];
    }
};
xmlhttp.open("GET", "json_demo_array.txt", true);
xmlhttp.send();
//json_demo_array.txt内容
[ "porsche", "BMW", "Volvo", "Audi" ]









