javascript - 将 JSON 显示为类似于下载的弹出窗口

标签 javascript json angular

我是前端开发新手,在将 json 显示到新窗口时遇到一些问题。目前,我让用户像这样下载 json


                var blob = new Blob([$scope.data], {type: 'json'});
                var downloadLink = angular.element('<a></a>');
                downloadLink.attr('href', window.URL.createObjectURL(blob));
                downloadLink.attr('download', 'data.json');
                downloadLink[0].click();

这很好,因为当他们单击下载并打开链接时,json 会显示格式化的格式,他们可以单击其中的各个部分,然后它会下拉以显示更多内容。

我正在尝试获取它,以便他们不再需要下载它,并且可以在新窗口中打开它。到目前为止,我得到的最接近的是这个

                var x = window.open();
                x.document.open();
                x.document.write('<html><body><pre>' + $scope.data + '</pre></body></html>');
                x.document.close();

显示 json,但未格式化。这是一条线,而且非常非常长。有没有一种好方法来格式化 json,使其看起来像通过浏览器打开 json 文件时一样漂亮?

最佳答案

如果您只想格式化显示的 json,则可以使用 JSON.stringifyintent parameter ,

...
const formattedJson = JSON.stringify($scope.data, null, 4); // Indented 4 spaces also '\t' (tab) is allowed
x.document.write('<html><body><pre>' + formattedJson + '</pre></body></html>');
...

关于javascript - 将 JSON 显示为类似于下载的弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59495204/

相关文章:

python - 在 Django 中将 JSON 显示为表

angular - 在 promise 中循环 [object, Object]

python - 如何修改 Python JSON 对象数组

json - 从 CSV 导入 RethinkDB 时指定数据类型

JavaScript:如何在 e.preventDefault 之后放置多个项目?

javascript - 如何在 Windows 上使用 PhantomJS/CasperJS 的子进程模块

css - 以 Angular 设置第 n 个 child w.r.t 主机上下文

angular - Angular 条件的 ng 级问题?

javascript - 带有子类别的 d3 条形图

javascript - 无法在屏幕中央获取输入字段