如何将 JSON 保存到本地文本文件

假设我有一个这样的 javascript 对象:

  var data = {
name: "cliff",
age: "34",
name: "ted",
age: "42",
name: "bob",
age: "12"
}


var jsonData = JSON.stringify(data);

我将其字符串化以转换为 JSON。如何将这个 JSON 保存到一个本地文本文件中,这样我就可以在记事本等中打开它。

254963 次浏览

Node.js:

var fs = require('fs');
fs.writeFile("test.txt", jsonData, function(err) {
if (err) {
console.log(err);
}
});

浏览器(webapi) :

function download(content, fileName, contentType) {
var a = document.createElement("a");
var file = new Blob([content], {type: contentType});
a.href = URL.createObjectURL(file);
a.download = fileName;
a.click();
}
download(jsonData, 'json.txt', 'text/plain');

这里有一个关于纯 js 的解决方案。你可以用 html5保存。例如,这个 lib 可能会很有帮助: < a href = “ https://github.com/legrey/FileSaver.js”rel = “ nofollow norefrer”> https://github.com/eligrey/filesaver.js
看看演示: < a href = “ http://eligrey.com/demos/FileSaver.js/”rel = “ nofollow norefrer”> http://eligrey.com/demos/filesaver.js/
附言。没有关于 json save 的信息,但是您可以将文件类型更改为 "application/json",并将格式更改为 .json

import { saveAs } from 'file-saver'


let data = { a: 'aaa' , b: 'bbb' }


let blob = new Blob([JSON.stringify(data)], { type: 'application/json' })
    

saveAs(blob, 'export.json')

将本地数据保存到 txt 文件是我的解决方案。

function export2txt() {
const originalData = {
members: [{
name: "cliff",
age: "34"
},
{
name: "ted",
age: "42"
},
{
name: "bob",
age: "12"
}
]
};


const a = document.createElement("a");
a.href = URL.createObjectURL(new Blob([JSON.stringify(originalData, null, 2)], {
type: "text/plain"
}));
a.setAttribute("download", "data.txt");
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
}
<button onclick="export2txt()">Export data to local txt file</button>

采用 大鹏解决方案并将其转录为类方法。

class JavascriptDataDownloader {


constructor(data={}) {
this.data = data;
}


download (type_of = "text/plain", filename= "data.txt") {
let body = document.body;
const a = document.createElement("a");
a.href = URL.createObjectURL(new Blob([JSON.stringify(this.data, null, 2)], {
type: type_of
}));
a.setAttribute("download", filename);
body.appendChild(a);
a.click();
body.removeChild(a);
}
}


new JavascriptDataDownloader({"greetings": "Hello World"}).download();