2015-09-13 31 views
16

Per esempio, ho un file di .JSON che ha il seguente:Come scrivere dati in un file JSON utilizzando Javascript

[{"honda": "accord, "color": "red"},{"ford": "focus", "color": "black"}] 

quale sarebbe il codice JavaScript per spingere un altro oggetto {"nissan": "sentra", "color": "green"} in questo .json matrice per rendere l'aspetto .json di file come

[{"honda": "accord, "color": "red"},{"ford": "focus", "color": "black"},{"nissan": "sentra", "color": "green"}] 

il motivo che mi chiedo è sto trovando un sacco di informazioni online su come estrarre i dati da un file .json utilizzando AJAX, ma non scrivere nuovi dati nel file .json utilizzando AJAX per aggiornare il file .json con dati aggiuntivi.

Qualsiasi aiuto sarebbe apprezzato! Grazie.

+0

perché non usi il database ?? e c'è errore di battitura nei dati json. manca '' 'in' "accord' –

+2

La soluzione a questo dipende dal tipo di server che si sta utilizzando. Molto probabilmente coinvolgerà l'invio di una richiesta POST autenticata a uno script sul lato server. –

+0

Devi ottenere i dati, analizzarli, modificarli, serializzarli, inviarli al server e persistere. Con quale parte hai problemi? Nota che la parte persistente (scrivendo nel file) non ha nulla a che fare con JavaScript. Questo è tutto gestito dal server. Quale lingua lato server stai usando? –

risposta

15

devi essere chiari su ciò che si intende per "JSON".

Alcune persone usano il termine JSON in modo errato per fare riferimento a un semplice oggetto JavaScript vecchio, ad esempio [{a: 1}]. Questo sembra essere un array. Se si desidera aggiungere un nuovo elemento alla matrice, basta push, come nel

var arr = [{a: 1}]; 
arr.push({b: 2}); 

< [{a: 1}, {b: 2}] 

La parola JSON può anche essere usato per riferirsi ad una stringa che è codificato in formato JSON:

var json = '[{"a": 1}]'; 

Notare le virgolette (singole) che indicano che si tratta di una stringa. Se si dispone di una tale stringa che si è ottenuto da qualche parte, è necessario analizzare un primo momento in un oggetto JavaScript, utilizzando JSON.parse:

var obj = JSON.parse(json); 

Ora è possibile manipolare l'oggetto nel modo desiderato, compreso push come indicato sopra. Se poi si vuole mettere di nuovo in una stringa JSON, quindi si utilizza JSON.stringify:

var new_json = JSON.stringify(obj.push({b: 2})); 
'[{"a": 1}, {"b": 1}]' 

JSON è anche usato come un modo comune per formattare i dati per la trasmissione dei dati da e verso un server, dove può essere salvato (persistente). È qui che entra in gioco Ajax. Ajax viene utilizzato sia per ottenere dati, spesso in formato JSON, da un server, e/o per inviare dati in formato JSON fino al server. Se hai ricevuto una risposta da una richiesta Ajax che è in formato JSON, potresti aver bisogno di come descritto sopra. Quindi è possibile manipolare l'oggetto, reinserirlo nel formato JSON con JSON.stringify e utilizzare un'altra chiamata ajax per inviare i dati al server per l'archiviazione o altre manipolazioni.

Si utilizza il termine "file JSON". Normalmente, la parola "file" viene utilizzata per fare riferimento a un file fisico su alcuni dispositivi (non, una stringa di cui si sta parlando nel codice o un oggetto JavaScript). Il browser non ha accesso ai file fisici sul tuo computer. Non può leggerli o scriverli. In realtà, il browser non ha nemmeno la nozione di "file". Pertanto, non puoi semplicemente leggere o scrivere qualche file JSON sul tuo computer locale.Se si sta inviando JSON da e verso un server, ovviamente il server potrebbe memorizzare JSON come file, ma più probabilmente il server sta costruendo il JSON in base ad alcune richieste Ajax, in base ai dati che recupera da un database o decodificare il JSON in alcune richieste Ajax e quindi salvare i dati rilevanti nel suo database.

Avete davvero un "file JSON", e se sì, dove esiste e da dove lo avete preso? Hai una stringa in formato JSON, che devi analizzare, eseguire il mainpulate e tornare a una nuova stringa in formato JSON? Hai bisogno di prendere JSON dal server e modificarlo e quindi inviarlo di nuovo al server? O il tuo "file JSON" è in realtà solo un oggetto JavaScript, che devi semplicemente manipolare con la normale logica JavaScript?

10

JSON può essere scritto nella memoria locale utilizzando JSON.stringify per serializzare un oggetto JS. Non è possibile scrivere su un file JSON utilizzando solo JS. Solo biscotti o storage locale

var obj = {"nissan": "sentra", "color": "green"}; 

localStorage.setItem('myStorage', JSON.stringify(obj)); 

E per recuperare l'oggetto in seguito

var obj = JSON.parse(localStorage.getItem('myStorage')); 
1

È inoltre possibile importare questo riutilizzabile open source write-json-file componente che funziona come si vede in questo esempio:

const writeJsonFile = require('bit/global/write-json-file'); 
const jsonFile = "/tmp/exampleFile.json"; 
writeJsonFile(jsonFile,{isThisReal:ture,author:amit}).catch(err => console.log(err)); 

codice Src:

const fs = require('fs'); 
    const vaildateJson = require('bit/global/json-validator'); 

    const writeToFile = (file,data) => { 
     const jsonStr = (data instanceof Object) ? JSON.stringify(data,null,4) : data ; 
     return vaildateJson(jsonStr) 
     .then(jsonStr => 
      new Promise((resolve, reject) => { 
      fs.writeFile(`${file}`, jsonStr, 'utf-8', function(err) { 
       if (err) reject(err); 
       else resolve(jsonStr); 
      }); 
      })) 
    } 

    module.exports = function writeJsonFile(file, data) { 
     return writeToFile(file,data) 
    }; 

È anche possibile utilizzare questo NPM package per il lavoro.

Problemi correlati