js导出json文件

/**
* @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文件)