Як зберегти JSON у локальний текстовий файл


85

Скажімо, у мене є об’єкт javascript, який виглядає так:

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

var jsonData = JSON.stringify(data);

Я його стригую, щоб перетворити на JSON. Як зберегти цей JSON у локальному текстовому файлі, щоб я міг відкрити його, скажімо, у Блокноті тощо.

Відповіді:


185

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

8

Ось рішення для чистого js. Ви можете зробити це за допомогою html5 saveAs. Наприклад, ця бібліотека може бути корисною: https://github.com/eligrey/FileSaver.js
Подивіться демо-версію: http://eligrey.com/demos/FileSaver.js/
PS Немає інформації про json save, але Ви можете зробити це, змінивши тип файлу на "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>

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.