JSON.parse()方法轉(zhuǎn)換對象的示例以及注意事項
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 解析實例
例如我們從服務(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ù)了:
<p id="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 對象。
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();從服務(wù)端接收數(shù)組的 JSON 數(shù)據(jù)
如果從服務(wù)端接收的是數(shù)組的 JSON 數(shù)據(jù),則 JSON.parse 會將其轉(zhuǎn)換為 JavaScript 數(shù)組:
實例:
var xmlhttp = new XMLHttpRequest();
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();異常
解析數(shù)據(jù)
JSON 不能存儲 Date 對象。
如果你需要存儲 Date 對象,需要將其轉(zhuǎn)換為字符串。
之后再將字符串轉(zhuǎn)換為 Date 對象。
var text = '{ "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.com"}';
var obj = 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ù)。
var text = '{ "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.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 + "創(chuàng)建日期:" + obj.initDate;解析函數(shù)
JSON 不允許包含函數(shù),但你可以將函數(shù)作為字符串存儲,之后再將字符串轉(zhuǎn)換為函數(shù)。
var text = '{ "name":"Runoob", "alexa":"function () {return 10000;}", "site":"www.runoob.com"}';
var obj = JSON.parse(text);
obj.alexa = eval("(" + obj.alexa + ")");
document.getElementById("demo").innerHTML = obj.name + " Alexa 排名:" + obj.alexa();不建議在 JSON 中使用函數(shù)。
瀏覽器支持
主流瀏覽器都支持 JSON.parse() 函數(shù):
- Firefox 3.5
- Internet Explorer 8
- Chrome
- Opera 10
- Safari 4
到此這篇關(guān)于JSON.parse()方法轉(zhuǎn)換對象的示例以及注意事項的文章就介紹到這了,更多相關(guān)JSON.parse()的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何實現(xiàn)json數(shù)據(jù)可視化詳解
最近在工作中開發(fā)一個內(nèi)部功能時碰到的一個需求,要把json數(shù)據(jù)在頁面上展示出來,平時瀏覽器會安裝jsonView這樣的擴(kuò)展來看json數(shù)據(jù),但是程序要用到的話該怎么辦呢?今天在網(wǎng)上搜索的時候,發(fā)現(xiàn)了這個小技巧,分享給大家,有需要的朋友們可以參考借鑒,下面來一起看看吧2016-11-11
json的定義、標(biāo)準(zhǔn)格式及json字符串檢驗
今天分享和總結(jié)一些json的基本定義、格式、字符串的格式,以及在做測試的時候使用json時做一些簡單的校驗2014-05-05
Jquery+asp.net后臺數(shù)據(jù)傳到前臺js進(jìn)行解析的方法
我們經(jīng)常用jquery讀取后臺數(shù)據(jù),后臺返回數(shù)據(jù)。后臺數(shù)據(jù)格式就有很多了,但是js里面沒有什么類型之分2014-05-05

