Scrivere un object JSON in un file di testo in javascript

Ho un object JSON in javascript. Voglio semplicemente scrivere l’object JSON su un file di testo. Dalle cose che ho trovato fino ad ora indica che non è ansible farlo a causa di problemi di sicurezza da parte del cliente. C’è una soluzione ?. Sarà ansible modificare un file già presente se inizialmente si mettono alcuni valori fittizi?

Grazie

Una cosa che puoi fare è impostare il JSON come download al volo.

var data = "{name: 'Bob', occupation: 'Plumber'}"; var url = 'data:text/json;charset=utf8,' + encodeURIComponent(data); window.open(url, '_blank'); window.focus(); 

Demo funzionante: http://jsfiddle.net/sLq3F/

A parte questo, non è ansible scrivere un JSON su un file sul client per motivi di sicurezza. (Altrimenti si ha accesso ai filesystem degli utenti del proprio sito Web.) Per questo si dovrebbe utilizzare una lingua lato server e memorizzare il file sul lato server.


Correzione: sembra che tu possa scrivere su un file, cioè su una “sezione sandbox” del filesystem dell’utente. Vedi il commento di Kevin Jantzer qui sotto.

Un’altra correzione : scusa, l’API Filesystem non è in uso. Dal sito Web HTMl5Rocks: “Nell’aprile 2014 è stato annunciato su webapp pubbliche che le specifiche dell’API di Filesystem dovrebbero essere considerate come morte. Altri browser hanno mostrato scarso interesse per l’implementazione.”

Forse questa soluzione è un po ‘più elegante, testata in Chrome, FF e da ie7 a ie10, testata con testo, JSON, PDF e dati XLS (usando il tipo di contenuto appropriato)

saveFile() funzione saveFile() con un blob di dati o crea un blob di dati al volo con type impostato su nothing e i tuoi dati tra []

In questo esempio, dobbiamo solo stringificare l’object settings e impostare correttamente il tipo di dati.

 settings = { any_kind_of_object: true }; json_str = JSON.stringify(settings); saveFile('yourfilename.json', "data:application/json", new Blob([json_str],{type:""})); function saveFile (name, type, data) { if (data != null && navigator.msSaveBlob) return navigator.msSaveBlob(new Blob([data], { type: type }), name); var a = $(""); var url = window.URL.createObjectURL(new Blob([data], {type: type})); a.attr("href", url); a.attr("download", name); $("body").append(a); a[0].click(); setTimeout(function(){ // fixes firefox html removal bug window.URL.revokeObjectURL(url); a.remove(); }, 500); }