我是前端开发新手,在将 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.stringify
和 intent 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/