Jak zapisać JSON w lokalnym pliku tekstowym

88

Powiedzmy, że mam obiekt javascript, który wygląda następująco:

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

var jsonData = JSON.stringify(data);

Podkreślam to, aby przekonwertować na JSON. Jak zapisać ten JSON w lokalnym pliku tekstowym, aby móc go otworzyć, powiedzmy, w Notatniku itp.

thatOneGuy
źródło

Odpowiedzi:

195

Node.js:

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

Przeglądarka (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
źródło
3
jest to możliwe, wystarczy użyć tagu wejściowego z type = file, jak tutaj: stackoverflow.com/questions/13709482/…
Rafał Łużyński
12
Dostaję, [object Object]kiedy to robię
Jack
40
@JackNicholson Właśnie dostałem [object Object]... Musiałem JSON.stringify()najpierw zadzwonić i przekazać wartość, a nie sam obiekt.
ne1410s
1
U mnie zadziałało, ale co, jeśli nie chcę zastępować pliku, ale zamiast tego dołączyć tekst do pliku?
Cesar Leonardo Ochoa Contreras
5
Następnie a.click()powinniśmy zadzwonić revokeObjectURL, aby przeglądarka wiedziała, że ​​nie ma już odniesienia do pliku: URL.revokeObjectURL(a.href).Więcej informacji: developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL .
andreivictor
8

Oto rozwiązanie dotyczące czystego js. Możesz to zrobić za pomocą html5 saveAs. Na przykład ta biblioteka może być pomocna: https://github.com/eligrey/FileSaver.js
Obejrzyj demo: http://eligrey.com/demos/FileSaver.js/
PS Nie ma informacji o zapisywaniu json, ale możesz to zrobić zmieniając typ pliku na "application/json"i format na.json

aslantorret
źródło
„application / json” i .json dobrze współpracują z systemem plików html. Używam tego również, aby zapobiec błędom analizy json, takim jak „Nieoczekiwany token? W formacie JSON”. Dzięki.
Ajay Singh
5

Moim rozwiązaniem jest zapisywanie danych lokalnych do pliku 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>

dabeng
źródło