¿Cómo guardo JSON en un archivo de texto local?


84

Digamos que tengo un objeto javascript que se parece a esto:

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

var jsonData = JSON.stringify(data);

Lo modifico para convertirlo a JSON. ¿Cómo guardo este JSON en un archivo de texto local para poder abrirlo, digamos, en el Bloc de notas, etc.?

Respuestas:


184

Node.js:

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

Navegador (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
es posible, solo tiene que usar la etiqueta de entrada con type = file, como se presenta aquí: stackoverflow.com/questions/13709482/…
Rafał Łużyński

11
Me da [object Object]cuando hago esto
Jack

37
@JackNicholson También acabo de recibir [object Object]... Tuve que llamar JSON.stringify()primero y pasar ese valor, en lugar del objeto en sí.
ne1410s

1
Me funcionó, pero ¿qué pasa si no quiero reemplazar el archivo sino agregar texto al archivo?
Cesar Leonardo Ochoa Contreras

4
Después a.click(), debemos llamar revokeObjectURLpara que el navegador sepa que no debe guardar más la referencia al archivo: URL.revokeObjectURL(a.href).Más información: developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL .
andreivictor

8

Aquí hay una solución en js puro. Puedes hacerlo con html5 saveAs. Por ejemplo, esta lib podría ser útil: https://github.com/eligrey/FileSaver.js
Mire la demostración: http://eligrey.com/demos/FileSaver.js/
PD No hay información sobre json save, pero puede hacerlo cambiando el tipo de archivo "application/json"y el formato a.json


"application / json" y .json funcionan bien con el sistema de archivos html. También se usa esto para evitar errores de análisis json como "¿Token inesperado? En JSON". Gracias.
Ajay Singh

5

Es mi solución para guardar datos locales en un archivo 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>

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.