我們在前端開發(fā)過程中,通過服務(wù)器獲取數(shù)據(jù)的時候服務(wù)器返回的數(shù)據(jù)通常為JSON格式,今天小千就來教大家如何利用JavaScript解析服務(wù)器的響應(yīng)獲取我們想要的數(shù)據(jù)。
該過程通常包括兩個步驟:將數(shù)據(jù)解碼為本機結(jié)構(gòu)(例如數(shù)組或?qū)ο螅缓笫褂肑avaScript的內(nèi)置方法遍歷該數(shù)據(jù)結(jié)構(gòu)。
從遠(yuǎn)程API獲取接口
1. 使用XMLHttpRequest API
返回的數(shù)據(jù)為:
// string
// {"id":"helloworld","joke":"today is Friday!","status":200}
服務(wù)器返回了一個字符串。我們需要先將其解析為JavaScript對象,然后才能遍歷其屬性。我們可以使用JSON.parse()做到這一點,如下顯示:
2. 使用Fetch API
盡管上面使用XMLHttpRequest對象的方法效果很好,但在復(fù)雜的場景下它就會變得非常笨拙。下面我們使用瀏覽器新提供的api,它是window對象上定義的方法fetch,你可以使用該方法執(zhí)行請求。此方法返回一個Promise,可用于檢索請求的響應(yīng)。
Fetch API返回響應(yīng)流。這不是JSON,因此JSON.parse()需要嘗試使用它的response.json()函數(shù)而不是對其進(jìn)行調(diào)用。這將返回一個Promise,該Promise會將響應(yīng)的正文文本解析為JSON的結(jié)果進(jìn)行解析。
多種方式遍歷數(shù)據(jù)
1. 使用for...in
2. 使用Object.entries,Object.values或Object.entries
3. 處理數(shù)組
值的有序列表(也稱為數(shù)組)也是有效的JSON,讓我們研究如何處理此類響應(yīng)。
對于這個示例,我們將使用GitHub的REST API來獲取用戶存儲庫的列表:
如您所見,API返回了一個對象數(shù)組。要訪問每個單獨的對象,我們可以使用常規(guī)forEach方法:
另外,您當(dāng)然可以使用上面討論的任何方法來遍歷對象的所有屬性,并將它們記錄到控制臺:
結(jié)論
在這篇文章中,我們研究了什么是JSON。我已經(jīng)演示了如何將服務(wù)器的JSON響應(yīng)解析為本機數(shù)據(jù)結(jié)構(gòu)(例如數(shù)組或?qū)ο螅?,以及如何遍歷這種結(jié)構(gòu)以訪問其中包含的數(shù)據(jù)。我們大部分web服務(wù)與服務(wù)器的交互都是圍繞這個這個展開,希望這篇文章對您有所幫助
最后歡迎對前端開發(fā)感興趣的同學(xué)來到千鋒大前端培訓(xùn)班了解我們的大前端培訓(xùn)課程,現(xiàn)在咨詢還有免費學(xué)習(xí)資料可以領(lǐng)取,趕緊來看看吧。