1 回答

TA貢獻1846條經驗 獲得超7個贊
數據 URI 采用 Base64 編碼的 JSON。有兩個步驟:
解碼 Base64(例如,使用函數
atob
),并且解析生成的 JSON
例如(在瀏覽器上):
const dataURI = "data:application/json;base64,ew0KICAgICJtYWx0X3R5cGUiOiAibG9nIiwNCiAgICAibWFsdF9kYXRhIjogIldvdywgdSByIGFsbW9zdCB0aGVyZSA6TyINCn0=";
// 29 = length of "data:application/json;base64,"
const json = atob(dataURI.substring(29));
const result = JSON.parse(json);
console.log(result);
Buffer您在問題中使用的向我表明您可能正在使用 Node.js。如果是這樣,您可以將調用替換atob為Buffer.from(data, 'base64').toString():
const dataURI = "data:application/json;base64,ew0KICAgICJtYWx0X3R5cGUiOiAibG9nIiwNCiAgICAibWFsdF9kYXRhIjogIldvdywgdSByIGFsbW9zdCB0aGVyZSA6TyINCn0=";
// 29 = length of "data:application/json;base64,"
const json = Buffer.from(dataURI.substring(29), "base64").toString();
const result = JSON.parse(json);
console.log(result);

TA貢獻1851條經驗 獲得超5個贊
如果您不介意將上下文更改為異步上下文,則可以使用它fetch()
來解析資源。fetch()
通常與 URL 一起使用,但也可以與數據 URI 一起使用(在大多數瀏覽器中)。
const dataURI = "data:application/json;base64,ew0KICAgICJtYWx0X3R5cGUiOiAibG9nIiwNCiAgICAibWFsdF9kYXRhIjogIldvdywgdSByIGFsbW9zdCB0aGVyZSA6TyINCn0=";
(async function () {
? const response = await fetch(dataURI);
? const data = await response.json();
? console.log(data);
})();
如果您已經在使用庫來簡化網絡請求,那么您也可以使用它們。
例子:
jQuery:
const dataURI = "data:application/json;base64,ew0KICAgICJtYWx0X3R5cGUiOiAibG9nIiwNCiAgICAibWFsdF9kYXRhIjogIldvdywgdSByIGFsbW9zdCB0aGVyZSA6TyINCn0=";
(async function() {
? const data = await $.getJSON(dataURI);
? console.log(data);
})();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
軸:
const dataURI = "data:application/json;base64,ew0KICAgICJtYWx0X3R5cGUiOiAibG9nIiwNCiAgICAibWFsdF9kYXRhIjogIldvdywgdSByIGFsbW9zdCB0aGVyZSA6TyINCn0=";
(async function() {
? const response = await axios.get(dataURI);
? console.log(response.data);
})();
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.21.0/axios.min.js"></script>
添加回答
舉報