javascript - Javascript 中 JSON 的数据 URI?

标签 javascript json data-uri

我遇到一个问题,我的服务器应用程序获取 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。这有两个步骤:

  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。如果是这样,您将用 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/

相关文章:

java - 使用 Apache Spark 迭代并展平数据集中的结构类型数组 :Java

javascript - JSON tv4 对象如果为真且存在其他对象则有效

javascript - Blob 的 DataUri 与 Base64 字符串 DataUri

css - 没有 base64 编码的手写笔内联 SVG 数据 uri

javascript - 无法在javascript中实现打印预览?

javascript - 数据不与 Knockout 绑定(bind)

javascript - 作为单线程语言的 JavaScript 中的 setInterval 和 clearInterval

javascript - 如何从 zul ZK 中的 Controller 获取 json 对象?

javascript - 在 iOS Safari 中使用 XHR 下载文件

javascript - 想要禁用我的下一个按钮,直到使用 javascript 填充我的所有选项