2015-09-13 10 views
16

Zum Beispiel mit schreiben, ich habe eine .JSON-Datei, die Folgendes:Wie Daten in eine JSON-Datei Javascript

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

Was wäre der JavaScript-Code eine andere zu schieben Objekt {"nissan": "sentra", "color": "green"} in diesem .json Array zu machen die .json Datei aussehen wie

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

der Grund, warum ich gefragt bin bin ich eine Menge Informationen zu finden bin online auf, wie Daten aus einer .json Datei mit AJAX zu ziehen, aber keine neuen Daten in die Datei zu schreiben .json Verwenden von AJAX, um die .json-Datei mit zusätzlichen Daten zu aktualisieren.

Jede Hilfe wäre willkommen! Vielen Dank.

+0

Warum verwenden Sie keine Datenbank? und es gibt einen Tippfehler in deinen JSON-Daten. Es fehlt '' 'in' "accord" –

+2

Die Lösung hängt davon ab, welche Art von Server Sie verwenden. Es wird höchstwahrscheinlich eine authentifizierte POST-Anfrage an ein serverseitiges Skript senden. –

+0

Sie müssen die Daten abrufen, analysieren, mutieren, serialisieren, an den Server zurücksenden und persistieren. Mit welchem ​​Teil hast du Probleme? Beachten Sie, dass der persistente Teil (Schreiben in die Datei) nichts mit JavaScript zu tun hat. Das alles wird vom Server erledigt. Welche serverseitige Sprache verwenden Sie? –

Antwort

15

Sie auf klar sein müssen, um holen, was Sie unter „JSON“.

Einige Leute verwenden den Begriff JSON falsch, um auf ein einfaches altes JavaScript-Objekt wie [{a: 1}] zu verweisen. Dieser ist zufällig ein Array. Wenn Sie ein neues Element in das Array hinzufügen, nur push es, wie in

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

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

Das Wort JSON kann auch verwendet werden, um eine Zeichenfolge zu verweisen, die im JSON-Format codiert ist:

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

Beachten Sie die (einfachen) Anführungszeichen, die angeben, dass dies eine Zeichenfolge ist. Wenn Sie eine solche Zeichenfolge, die Sie von irgendwo erhalten, müssen Sie zuerst in ein JavaScript-Objekt analysieren, mit JSON.parse:

var obj = JSON.parse(json); 

Jetzt können Sie das Objekt auf jede Art und Weise manipulieren Sie wollen, einschließlich push wie oben gezeigt. Wenn Sie dann in einen JSON-String zurück setzen wollen, dann verwenden Sie JSON.stringify:

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

JSON ist auch als gemeinsamer Weg verwendet, um Daten für die Übertragung von Daten zu und von einem Server zu formatieren, wo es sein kann, gespeichert (beibehalten). Hier kommt ajax ins Spiel. Ajax wird verwendet, um Daten, oft im JSON-Format, von einem Server zu erhalten und/oder Daten im JSON-Format an den Server zu senden. Wenn Sie eine Antwort von einer Ajax-Anfrage erhalten haben, die das JSON-Format ist, müssen Sie möglicherweise JSON.parse es wie oben beschrieben. Dann können Sie das Objekt manipulieren, es in das JSON-Format mit JSON.stringify zurückversetzen und einen anderen Ajax-Aufruf verwenden, um die Daten zum Speichern oder für andere Manipulationen an den Server zu senden.

Sie verwenden den Begriff "JSON-Datei". Normalerweise wird das Wort "Datei" verwendet, um auf eine physische Datei auf einem Gerät zu verweisen (nicht eine Zeichenfolge, mit der Sie in Ihrem Code arbeiten, oder ein JavaScript-Objekt). Der Browser hat keinen Zugriff auf physische Dateien auf Ihrem Computer. Es kann sie nicht lesen oder schreiben. Tatsächlich hat der Browser nicht wirklich die Vorstellung einer "Datei". So können Sie nicht nur eine JSON-Datei auf Ihrem lokalen Rechner lesen oder schreiben.Wenn Sie JSON zu und von einem Server senden, speichert der Server den JSON natürlich als Datei, aber der Server würde den JSON wahrscheinlich basierend auf einer Ajax-Anfrage basierend auf Daten erstellen, die er aus einer Datenbank abruft oder Decodieren der JSON in einer Ajax-Anfrage und dann Speichern der relevanten Daten zurück in ihre Datenbank.

Haben Sie wirklich eine "JSON-Datei", und wenn ja, wo existiert sie und wo haben Sie sie her? Haben Sie eine Zeichenfolge im JSON-Format, die Sie parsen, mainpulieren und in eine neue Zeichenfolge im JSON-Format umwandeln müssen? Müssen Sie JSON vom Server abrufen und ändern und dann zurück an den Server senden? Oder ist Ihre "JSON-Datei" eigentlich nur ein JavaScript-Objekt, das Sie einfach mit normaler JavaScript-Logik bearbeiten müssen?

10

JSON kann mit JSON.stringify in den lokalen Speicher geschrieben werden, um ein JS-Objekt zu serialisieren. Sie können nicht mit nur JS in eine JSON-Datei schreiben. Nur Cookies oder lokale Speicher

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

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

und das Objekt später

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

Sie können auch diese wieder verwendbaren Open-Source-write-json-file Komponente importieren, die in diesem Beispiel, wie gesehen funktioniert:

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

Src Code:

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) 
    }; 

Sie auch diese NPM package für den Job verwenden können.

Verwandte Themen