[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");