我遇到一个问题,我的服务器应用程序获取 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'
最佳答案
数据 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。如果是这样,您将用 Buffer.from(data, 'base64').toString()
替换对 atob
的调用:
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);
关于javascript - Javascript 中 JSON 的数据 URI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65075062/