1. 程式人生 > 實用技巧 >[NOI2018][洛谷P4770]你的名字(SAM+SA+主席樹)

[NOI2018][洛谷P4770]你的名字(SAM+SA+主席樹)

1.JSON 是 JS 物件表示法,即以JS物件的方式來表現出來的字串

(1)用一對 { } 來表示一個物件

(2)物件的屬性名稱,必須用 " " 屬性引起來,值如果是字串,也必須用 " " 引起來

(3)屬性 與 值,用 :連線

(4)多對屬性 與 值 之間,用 , (逗號)分開

建立一個物件:liming,他的三個屬性如下所示,表示出屬性並列印在控制檯

height , 值為 185
weight , 值為 80
gender , 值為 男

var liming = {
                     height:185,
                     weight:
80, gender:"男" } console.log(liming.height); console.log(liming.weight); console.log(liming.gender);

當定義兩個物件,並列印兩個物件的資訊

                //xiaohua的資訊
                var xiaohua = {
                     height:165,
                     weight:
50, gender:"女" } //liming的資訊 var liming = { height:185, weight:80, gender:"男" } //定義一個數組用於存放以上資訊 var arr = [xiaohua,liming];
for(var i=0;i<arr.length;i++){ var s = arr[i] console.log(s.height,s.weight,s.gender); }

將 xiaohua 和 liming 的資訊寫在陣列中,程式碼為:

                var arr = [{
                     height:165,
                     weight:50,
                     gender:"女"
                },
                {
                     height:185,
                     weight:80,
                     gender:"男"
                }
                ];
                for(var i=0;i<arr.length;i++){
                    var s = arr[i]
                    console.log(s.height,s.weight,s.gender);
                }

2.JSON陣列

(1)普通陣列表現 : '["李明","小花"]'

(2)物件的陣列:

                           '[
                                {
				 	height:165,
				 	weight:50,
				 	gender:"女"
				},
				{
				 	height:185,
				 	weight:80,
				 	gender:"男"
				}
		            ]'

(3)JSON檔案

建立一個檔案,以 ***.json 作為字尾,該檔案中的資料必須是符合JSON格式的字串

(4)將JSON字串,轉成 JS物件 / 陣列

使用 eval() (容易出錯)

var p = '{"name":"li","age":25}';
var obj = eval("("+p+")");

使用 JSON.parse() 來解析 JSON字串得到的JS物件

var obj = JSON.parse(p)

練習:

建立一個user.json檔案,裡邊包含一個數組,陣列有三個物件,每個物件包含 uname , upwd, gender 屬性,分別賦值,並建立一個 getusers.html , 使用非同步的方式向 user.json傳送一個請求,並按照順序將資料列印在控制檯中

user.json

[
    {
        "uname":"abcabc",
        "upwd":123123,
        "gender":"男"
    },
    {
        "uname":"abcde",
        "upwd":123456,
        "gender":"女"
    },
    {
        "uname":"王大錘",
        "upwd":111111,
        "gender":"男"
    }
]

getusers.html

<script src="common.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            function showJSON(){
                //1.建立xhr物件
                //2.建立請求
                //3.設定響應事件
                //4.傳送請求
                var xhr = createXhr();
                xhr.open("GET","users.json",true);
                xhr.onreadystatechange = function(){
                    if(xhr.readyState==4&&xhr.status==200){
                        var resText = xhr.responseText;
                        var persons = JSON.parse(resText);
                        for(var i=0;i<persons.length;i++){
                            var per = persons[i];
                            console.log(per.uname,per.upwd,per.gender);
                        }
                    }
                }
                xhr.send(null);
            }

3.在php中,可以直接將陣列(一維,二維,關聯) 轉換成JSON格式的字串

php中通過 : json_encode() 將陣列轉換為JSON字串

語法:$str = json_encode($array);

注意:如果伺服器端響應回來的資料是JSON格式的,需要增加響應訊息頭
header("Content-Type:application/json");