JSON的parse()方法
parse()方法的介紹:
在接收伺服器資料時一般是字串。
我們可以使用 JSON.parse() 方法將資料轉換為 JavaScript 物件。
語法
JSON.parse(text[, reviver])
引數說明:
- text:必需, 一個有效的 JSON 字串。
- reviver: 可選,一個轉換結果的函式, 將為物件的每個成員呼叫此函式。
下面我們來看一個例項:
<p id="demo"></p>
<script>
var obj = JSON.parse('{ "name":google", "alexa":10000, "site":"www.google.com" }');
document.getElementById("demo").innerHTML = obj.name + ":" + obj.site;
</script>
首先通過parse()方法將JSON資料轉換為JavaScript物件,
解析完成後,我們就可以在網頁上使用JSON資料了
從服務端接收 JSON 資料(陣列JSON資料)
我們可以使用 AJAX 從伺服器請求 JSON 資料,並解析為 JavaScript 物件。
eg:
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", "/try/ajax/json_demo.txt", true); xmlhttp.send();
json_demo.txt服務端資料需要自個編寫。
JSON中有個異常解析資料
JSON 不能儲存 Date 物件。如果你需要儲存 Date 物件,需要將其轉換為字串。之後再將字串轉換為 Date 物件。
<p id="demo"></p>
<script> //將字串轉換為data物件
var text = '{ "name":"csdn", "initDate":"2013-12-14", "site":"www.csdn.com"}'; var obj = JSON.parse(text); obj.initDate = new Date(obj.initDate);
document.getElementById("demo").innerHTML = obj.name + "建立日期: " + obj.initDate;
</script>
這時我們可以啟用JSON的第二個引數:
<p id="demo"></p>
<script>
var text = '{ "name":"csdn", "initDate":"2013-12-14", "site":"www.csdn.com"}'; var obj = JSON.parse(text, function (key, value) { if (key == "initDate") { return new Date(value); } else { return value; }});
document.getElementById("demo").innerHTML = obj.name + "建立日期:" + obj.initDate;
解析函式:
JSON 不允許包含函式,但你可以將函式作為字串儲存,之後再將字串轉換為函式。
var text = '{ "name":"Runoob", "alexa":"function () {
return 10000;}",
"site":"www.runoob.com"}';
var obj = JSON.parse(text);
obj.alexa = eval("(" + obj.alexa + ")"); 注意:最好不要在json中使用函式
document.getElementById("demo").innerHTML = obj.name + " Alexa 排名:" + obj.alexa();