Wie speichere ich JSON in einer lokalen Textdatei?

84

Angenommen, ich habe ein Javascript-Objekt, das so aussieht:

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

var jsonData = JSON.stringify(data);

Ich stringiere es, um es in JSON zu konvertieren. Wie speichere ich diesen JSON in einer lokalen Textdatei, damit ich ihn beispielsweise im Editor usw. öffnen kann?

thatOneGuy
quelle

Antworten:

184

Node.js:

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

Browser (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');
Rafał Łużyński
quelle
3
Es ist möglich, dass Sie nur das Eingabe-Tag mit type = file verwenden müssen, wie hier dargestellt: stackoverflow.com/questions/13709482/…
Rafał Łużyński
11
Ich bekomme, [object Object]wenn ich das mache
Jack
37
@ JackNicholson Ich habe auch gerade bekommen [object Object].. Ich musste JSON.stringify()zuerst aufrufen und diesen Wert übergeben, anstatt das Objekt selbst.
ne1410s
1
Es hat bei mir funktioniert, aber was ist, wenn ich die Datei nicht ersetzen, sondern Text an die Datei anhängen möchte?
Cesar Leonardo Ochoa Contreras
4
Danach a.click()sollten wir anrufen revokeObjectURL, um den Browser wissen zu lassen, dass der Verweis auf die Datei nicht länger URL.revokeObjectURL(a.href).beibehalten wird: Weitere Informationen: developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL .
andreivictor
8

Hier ist eine Lösung für reines js. Sie können dies mit html5 saveAs tun. Zum Beispiel könnte diese Bibliothek hilfreich sein: https://github.com/eligrey/FileSaver.js
Schauen Sie sich die Demo an: http://eligrey.com/demos/FileSaver.js/
PS Es gibt keine Informationen über json save, aber Sie können den Dateityp in "application/json"und das Format in ändern.json

Aslantorret
quelle
"application / json" und .json funktionieren gut mit dem HTML-Dateisystem. Verwenden Sie diese Option auch, um JSON-Analysefehler wie "Unerwartetes Token? In JSON" zu vermeiden. Vielen Dank.
Ajay Singh
5

Es ist meine Lösung, lokale Daten in einer TXT-Datei zu speichern.

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>

dabeng
quelle