美文网首页
js导出json文件

js导出json文件

作者: 醉笙情丶浮生梦 | 来源:发表于2020-06-23 11:19 被阅读0次
    /**
    * @description:
    * @param {Object} data json对象
    * @param {String} file 文件名
    * @return:
    */
    saveJSON(data, filename) {
    if (!data) {
      alert("保存的数据为空");
      return;
    }
    if (!filename) filename = "json.json";
    if (typeof data === "object") {
      data = JSON.stringify(data, undefined, 4);
    }
    // 要创建一个 blob 数据
    let blob = new Blob([data], { type: "text/json" }),
      a = document.createElement("a");
    a.download = filename;
    
    // 将blob转换为地址
    // 创建 URL 的 Blob 对象
    a.href = window.URL.createObjectURL(blob);
    console.log(blob, "链接", a.href);
    
    // 标签 data- 嵌入自定义属性  屏蔽后也可正常下载
    a.dataset.downloadurl = ["text/json", a.download, a.href].join(":");
    console.log(a, "dataset", a.dataset.downloadurl);
    
    // 添加鼠标事件
    let event = new MouseEvent("click", {});
    console.log("事件", event);
    
    // 向一个指定的事件目标派发一个事件
    a.dispatchEvent(event);
    },
    

    初版

    /**
    * @description:
    * @param {Object} data json对象
    *  @param {String} file 文件名
    * @return:
    */
    
    saveJSON(data, filename) {
    if (!data) {
      alert("保存的数据为空");
      return;
    }
    if (!filename) filename = "json.json";
    if (typeof data === "object") {
      data = JSON.stringify(data, undefined, 4);
    }
    // 要创建一个 blob 数据
    var blob = new Blob([data], { type: "text/json" }),
      // 添加鼠标事件
      e = document.createEvent("MouseEvents"),
      a = document.createElement("a");
    a.download = filename;
    // 将blob转换为地址
    // 创建 URL 的 Blob 对象
    a.href = window.URL.createObjectURL(blob);
    console.log(blob, "链接", a.href);
    
    a.dataset.downloadurl = ["text/json", a.download, a.href].join(":");
    console.log("dataset", a.dataset.downloadurl);
    
    // web 标准中已废弃
    // 用以在鼠标事件创建时初始化其属性的值
    e.initMouseEvent(
      "click",
      true, // 是否可以冒泡
      false,// 是否可以阻止事件默认行为
      window,// 指向window对象
      0, // 事件的鼠标点击数量
      0, // 事件的屏幕的x坐标
      0,
      0, // 事件的客户端x坐标
      0,
      false, // 事件发生时 control 键是否被按下
      false, // 事件发生时 alt 键是否被按下
      false, // 事件发生时 shift 键是否被按下
      false, // 事件发生时 meta 键是否被按下
      0, // 鼠标按键值
      null
    );
    // 向一个指定的事件目标派发一个事件
    a.dispatchEvent(e);
    },
    

    js导出json文件

    相关文章

      网友评论

          本文标题:js导出json文件

          本文链接:https://www.haomeiwen.com/subject/mqicfktx.html