Blob類型是在HTML5中引入的一種全新的二進(jìn)制數(shù)據(jù)類型,Blob的英文全稱是Binary Large Object(二進(jìn)制大對(duì)象),它表示的是一個(gè)不可變的、原始的、二進(jìn)制數(shù)據(jù)類型的數(shù)據(jù)。Blob類型的數(shù)據(jù)可以存放各種各樣的數(shù)據(jù),例如圖片、音頻、視頻等等。
JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,它以文本的形式進(jìn)行數(shù)據(jù)的傳輸。JSON的結(jié)構(gòu)很簡(jiǎn)單,由鍵值對(duì)組成,比較容易理解和編寫(xiě),可以使用在各種語(yǔ)言中。
var jsonObj = { "name": "張三", "age": 20, "address": { "city": "北京", "district": "朝陽(yáng)區(qū)" } }
在Web開(kāi)發(fā)中,我們通常會(huì)將Blob數(shù)據(jù)與JSON數(shù)據(jù)結(jié)合起來(lái)使用。例如,在上傳或下載文件時(shí),服務(wù)端返回的數(shù)據(jù)格式往往是Blob類型的,在前端使用XMLHttpRequest對(duì)象或是Fetch API進(jìn)行請(qǐng)求后,需要對(duì)響應(yīng)數(shù)據(jù)進(jìn)行解析。此時(shí),我們可以使用Blob自帶的arrayBuffer()或text()方法將響應(yīng)數(shù)據(jù)轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)或文本數(shù)據(jù),再使用JSON.parse()方法對(duì)其進(jìn)行解析。
// 發(fā)起請(qǐng)求 const xhr = new XMLHttpRequest(); xhr.open('GET', '/api/download'); xhr.onload = function() { if(xhr.status === 200) { // 將Blob類型的數(shù)據(jù)轉(zhuǎn)換成文本類型 xhr.response.text().then(function(result) { // 使用JSON.parse()對(duì)JSON數(shù)據(jù)進(jìn)行解析 const obj = JSON.parse(result); console.log(obj); }); } }; xhr.send();
綜上所述,使用Blob類型和JSON數(shù)據(jù)是前端開(kāi)發(fā)中非常常見(jiàn)的需求。Blob類型可以存放各種各樣的數(shù)據(jù),而JSON數(shù)據(jù)則可以方便地進(jìn)行數(shù)據(jù)交換和解析。