程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了从浏览器下载JSON对象作为文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决从浏览器下载JSON对象作为文件?

开发过程中遇到从浏览器下载JSON对象作为文件的问题如何解决?下面主要结合日常开发的经验,给出你关于从浏览器下载JSON对象作为文件的解决方法建议,希望对你解决从浏览器下载JSON对象作为文件有所启发或帮助;

这是我为应用程序解决的方式:

HTML: <a ID="downloadAnchorElem" style="display:none"></a>

Js(纯Js,此处不是jquery):

var dataStr = "data:text/Json;charset=utf-8," + encodeURIComponent(JsON.Stringify(storageObj));
var dlAnchorElem = document.getElementByID('downloadAnchorElem');
dlAnchorElem.setAttribute("href",     dataStr     );
dlAnchorElem.setAttribute("download", "scene.Json");
dlAnchorElem.click();

在这种情况下,storageObj您要存储的是Js对象,而“ scene.Json”只是结果文件的示例名称。

与其他提议的方法相比,此方法具有以下优点:

  • 无需单击HTML元素
  • 结果将根据您的需要命名
  • 不需要jquery

我需要这种行为而无需显式单击,因为我想在某个时候从Js自动触发下载。

Js解决方案(无需HTML):

  function downloadobjectAsJson(exportObj, exportName){
    var dataStr = "data:text/Json;charset=utf-8," + encodeURIComponent(JsON.Stringify(exportObj));
    var downloadAnchorNode = document.createElement('a');
    downloadAnchorNode.setAttribute("href",     dataStr);
    downloadAnchorNode.setAttribute("download", exportname + ".Json");
    document.body.appendChild(downloadAnchorNodE); // required for firefox
    downloadAnchorNode.click();
    downloadAnchorNode.remove();
  }

解决方法

我有以下代码,可让用户下载csv文件中的数据字符串。

exportData = 'data:text/csv;charset=utf-8,';
exportData += 'some csv Strings';
encodedUri = encodeURI(exportData);
newWindow = window.open(encodedUri);

如果客户端运行代码,它将生成空白页并开始下载csv文件中的数据,效果很好。

所以我试图用JSON对象来做到这一点

exportData = 'data:text/json;charset=utf-8,';
exportData += escape(JSON.Stringify(jsonObject));
encodedUri = encodeURI(exportData);
newWindow = window.open(encodedUri);

但是我只看到一个页面,上面显示了JSON数据,没有下载它。

我进行了一些研究,并且该研究声称可以工作,但是我的代码没有任何区别。

我在代码中缺少什么吗?

大佬总结

以上是大佬教程为你收集整理的从浏览器下载JSON对象作为文件全部内容,希望文章能够帮你解决从浏览器下载JSON对象作为文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。