Làm cách nào để lưu JSON vào tệp văn bản cục bộ


84

Giả sử tôi có một đối tượng javascript trông giống như sau:

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

var jsonData = JSON.stringify(data);

Tôi xâu chuỗi nó để chuyển đổi thành JSON. Làm cách nào để lưu JSON này vào một tệp văn bản cục bộ để tôi có thể mở nó, chẳng hạn như trong Notepad, v.v.

Câu trả lời:


184

Node.js:

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

Trình duyệt (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
có thể, bạn chỉ cần sử dụng thẻ đầu vào với type = file, như được trình bày ở đây: stackoverflow.com/questions/13709482/…
Rafał Łużyński

11
Tôi hiểu [object Object]khi tôi làm điều này
Jack

37
@JackNicholson Tôi cũng vừa nhận được [object Object].. Tôi phải gọi JSON.stringify()trước và chuyển giá trị đó , thay vì chính đối tượng.
ne1410s

1
Nó hoạt động với tôi, nhưng nếu tôi không muốn thay thế tệp mà thay vào đó nối văn bản vào tệp thì sao?
Cesar Leonardo Ochoa Contreras

4
Sau đó a.click(), chúng ta nên gọi revokeObjectURLđể thông báo cho trình duyệt biết rằng không còn giữ tham chiếu đến tệp nữa: URL.revokeObjectURL(a.href).Thông tin thêm: developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL .
andreivictor

8

Đây là một giải pháp trên js thuần túy. Bạn có thể làm điều đó với html5 saveAs. Ví dụ: lib này có thể hữu ích: https://github.com/eligrey/FileSaver.js
Xem bản demo: http://eligrey.com/demos/FileSaver.js/
PS Không có thông tin về json save, nhưng bạn có thể thực hiện việc thay đổi loại tệp thành "application/json"và định dạng thành.json


"application / json" và .json hoạt động tốt với hệ thống tệp html. Cũng sử dụng điều này để ngăn chặn bất kỳ lỗi phân tích cú pháp json nào chẳng hạn như "Mã thông báo không mong muốn? Trong JSON". Cảm ơn.
Ajay Singh

5

Đó là giải pháp của tôi để lưu dữ liệu cục bộ vào tệp 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>

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.