javascript
JSON学习笔记(四)- JSON.parse()
JSON.parse()
JSON 通常用于與服務(wù)端交換數(shù)據(jù)。
在接收服務(wù)器數(shù)據(jù)時一般是字符串。
我們可以使用 JSON.parse() 方法將數(shù)據(jù)轉(zhuǎn)換為 JavaScript 對象。
語法
JSON.parse(text[, reviver])參數(shù)說明:
- text:必需, 一個有效的 JSON 字符串。
- reviver: 可選,一個轉(zhuǎn)換結(jié)果的函數(shù), 將為對象的每個成員調(diào)用此函數(shù)。
JSON 解析實(shí)例
例如我們從服務(wù)器接收了以下數(shù)據(jù):
{ "name":"runoob","alexa":10000,"site":"www.runoob.com"}我們使用 JSON.parse() 方法處理以上數(shù)據(jù),將其轉(zhuǎn)換為 JavaScript 對象:
var obj = JSON.parse('{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }');解析前要確保你的數(shù)據(jù)是標(biāo)準(zhǔn)的 JSON 格式,否則會解析出錯。
你可以使用我們的在線工具檢測:https://c.runoob.com/front-end/53。
解析完成后,我們就可以在網(wǎng)頁上使用 JSON 數(shù)據(jù)了:
實(shí)例
<pid="demo"></p><script>var obj = JSON.parse('{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }');document.getElementById("demo").innerHTML = obj.name + ":" + obj.site;</script>從服務(wù)端接收 JSON 數(shù)據(jù)
我們可以使用 AJAX 從服務(wù)器請求 JSON 數(shù)據(jù),并解析為 JavaScript 對象。
實(shí)例
var xmlhttp = newXMLHttpRequest();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();查看服務(wù)端數(shù)據(jù): json_demo.txt
從服務(wù)端接收數(shù)組的 JSON 數(shù)據(jù)
如果從服務(wù)端接收的是數(shù)組的 JSON 數(shù)據(jù),則 JSON.parse 會將其轉(zhuǎn)換為 JavaScript 數(shù)組:
實(shí)例
var xmlhttp = newXMLHttpRequest();xmlhttp.onreadystatechange = function(){ if(this.readyState ==4 && this.status ==200){ myArr =JSON.parse(this.responseText);document.getElementById("demo").innerHTML = myArr[1];}};xmlhttp.open("GET","/try/ajax/json_demo_array.txt",true);xmlhttp.send();查看服務(wù)端數(shù)據(jù): json_demo_array.txt
異常
解析數(shù)據(jù)
JSON 不能存儲 Date 對象。
如果你需要存儲 Date 對象,需要將其轉(zhuǎn)換為字符串。
之后再將字符串轉(zhuǎn)換為 Date 對象。
實(shí)例
var text = '{ "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.com"}';varobj = JSON.parse(text);obj.initDate = new Date(obj.initDate);document.getElementById("demo").innerHTML = obj.name +"創(chuàng)建日期: " +obj.initDate;我們可以啟用 JSON.parse 的第二個參數(shù) reviver,一個轉(zhuǎn)換結(jié)果的函數(shù),對象的每個成員調(diào)用此函數(shù)。
實(shí)例
var text = '{ "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.com"}';varobj = JSON.parse(text,function (key,value){ if(key =="initDate"){ returnnew Date(value);} else{ returnvalue;}});document.getElementById("demo").innerHTML = obj.name +"創(chuàng)建日期:" +obj.initDate;解析函數(shù)
JSON 不允許包含函數(shù),但你可以將函數(shù)作為字符串存儲,之后再將字符串轉(zhuǎn)換為函數(shù)。
實(shí)例
var text = '{ "name":"Runoob", "alexa":"function () {return 10000;}", "site":"www.runoob.com"}';varobj = JSON.parse(text);obj.alexa = eval("(" +obj.alexa +")");document.getElementById("demo").innerHTML = obj.name +" Alexa 排名:" +obj.alexa();總結(jié)
以上是生活随笔為你收集整理的JSON学习笔记(四)- JSON.parse()的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JSON学习笔记(三)- 数组
- 下一篇: JSON学习笔记(五)- JSON.st