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


84

说我有一个看起来像这样的javascript对象:

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

var jsonData = JSON.stringify(data);

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

Answers:


184

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');

3
这是可能的,你就必须使用输入标签类型=文件,就像这里介绍:stackoverflow.com/questions/13709482/...
拉法尔Łużyński

11
我知道[object Object]何时执行此操作
杰克

37
@JackNicholson我也刚得到[object Object]..我必须先调用JSON.stringify(),然后传递值,而不是对象本身。
ne1410s

1
它为我工作,但是如果我不想替换文件而是将文本追加到文件怎么办?
塞萨尔·莱昂纳多·奥乔亚·孔特雷拉斯

4
之后a.click(),我们应该调用revokeObjectURL以便让浏览器知道不再保留对该文件的引用:URL.revokeObjectURL(a.href).更多信息:developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL
andreivictor '19

8

这是纯js的解决方案。您可以使用html5 saveAs来实现。例如,该库可能会有所帮助:https : //github.com/eligrey/FileSaver.js
查看演示: http //eligrey.com/demos/FileSaver.js/
PS没有有关json保存的信息,但是您可以将文件类型更改为"application/json"并将其格式更改为.json


“ application / json”和.json与html文件系统配合使用。还可以使用它来防止任何JSON解析错误,例如“ JSON中的意外令牌?”。谢谢。
阿杰·辛格

5

这是将本地数据保存到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>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.