亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Javascript 中的數據 URI 到 JSON?

Javascript 中的數據 URI 到 JSON?

臨摹微笑 2023-09-21 16:47:58
我遇到一個問題,我的服務器應用程序獲取 JSON 的 DataURI,我想再次將其解析為 JSON。我怎么能這樣做呢?我嘗試了不同的方法,但似乎沒有任何效果。我嘗試簡單地解析它,encodeURI(data);但仍然無法獲得原始的 JSON。這是數據 URI: data:application/json;base64,ew0KICAgICJtYWx0X3R5cGUiOiAibG9nIiwNCiAgICAibWFsdF9kYXRhIjogIldvdywgdSByIGFsbW9zdCB0aGVyZSA6TyINCn0=我也嘗試過對其進行編碼:var data = 'data:application/json;base64,ew0KICAgICJtYWx0X3R5cGUiOiAibG9nIiwNCiAgICAibWFsdF9kYXRhIjogIldvdywgdSByIGFsbW9zdCB0aGVyZSA6TyINCn0=';Buffer.from(data.toString('utf8'), 'base64').toString('ascii')但如果我在控制臺上登錄,我會得到這個:u+Zje   F- J'm+k0P"&VGEwGR#"&Fvr"@P"&VGEvFF#"%vwrBR"FVw7BFW&R$r P'
查看完整描述

1 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

數據 URI 采用 Base64 編碼的 JSON。有兩個步驟:

  1. 解碼 Base64(例如,使用函數atob),并且

  2. 解析生成的 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);


查看完整回答
反對 回復 2023-09-21
?
江戶川亂折騰

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>


查看完整回答
反對 回復 2023-09-21
  • 1 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號