Как сохранить JSON в локальный текстовый файл

88

Скажем, у меня есть объект javascript, который выглядит так:

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

var jsonData = JSON.stringify(data);

Я преобразовываю его в JSON. Как сохранить этот JSON в локальный текстовый файл, чтобы я мог открыть его, например, в Блокноте и т. Д.

thatOneGuy
источник

Ответы:

194

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
возможно, вам просто нужно использовать тег ввода с type = file, как
показано
12
Я понимаю, [object Object]когда делаю это
Джек
40
@JackNicholson Я тоже только что получил [object Object].. Мне нужно было JSON.stringify()сначала позвонить и передать это значение, а не сам объект.
ne1410s
1
У меня это сработало, но что, если я не хочу заменять файл, а вместо этого добавляю текст в файл?
Сезар Леонардо Очоа Контрерас
5
После a.click()этого мы должны позвонить revokeObjectURL, чтобы дать браузеру знать, что больше не нужно хранить ссылку на файл: URL.revokeObjectURL(a.href).Дополнительная информация: developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL .
andreivictor 05
8

Вот решение на чистом js. Вы можете сделать это с помощью html5 saveAs. Например, эта библиотека может быть полезна: https://github.com/eligrey/FileSaver.js
Посмотрите демонстрацию: http://eligrey.com/demos/FileSaver.js/
PS Информации о сохранении json нет, но вы можете сделать это, изменив тип файла "application/json"и формат на.json

Aslantorret
источник
"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>

дабенг
источник