2015-04-23 11 views
5

ich zur Zeit einen JSON-Datei-Setup mit folgendem Format habe:Anfügen einer JSON-Datei (Node.JS, Javascript)

{ 
    "OnetimeCode" : "Value" 
} 

Und ich möchte in der Lage sein, zwei Dinge zu tun:

  • Anhänge an die Datei (die Werte in der Datei ändern)
  • Neue Elemente hinzufügen, um die Datei (im gleichen Format)

ich habe sein Ich suche fast eine Stunde lang nach einem Modul (für Node) oder nach einfachem Beispielcode, mit dem ich das erreichen könnte.

Ich habe schon versucht, mehrere Plugins zu verwenden, aber anstatt sie an die Datei anzuhängen, schreiben sie sie komplett neu.

Eines des Plugins ist "jsonfile" genannt (NPM jsonfile installieren)

var jf = require('jsonfile'); // Requires Reading/Writing JSON  
var jsonStr = WEAS_ConfigFile; 
     var obj = JSON.parse(jsonStr); 
     obj.push({OnetimeCode : WEAS_Server_NewOneTimeCode}); 
     jf.writeFileSync(WEAS_ConfigFile, obj); // Writes object to file 

Aber das scheint nicht zu funktionieren.

Jede Hilfe wird geschätzt! Aber bitte, behalte es einfach.

auch: Ich kann nicht mit jQuery

+0

Haben Sie diese zur Laufzeit machen wollen oder bei der Erstellung? – moarboilerplate

+0

Sie müssen es neu schreiben, da immer ein Terminator am Ende der JSON-Datei (entweder '" '' '' '' '' '' ') sein wird und Sie Dinge in sie setzen müssen – Plato

+0

Ok, gibt es a Möglichkeit, es umzuschreiben, aber die vorhandenen Daten zu behalten? – medemi68

Antwort

9

Der Code, den Sie mit der jsonfile Bibliothek zur Verfügung gestellt sieht aus wie ein guter Start: Sie können die json in ein Objekt analysieren, rufen .push() und etwas sparen.

Mit rohen Knoten Anrufe (die JSON-Datei unter der Annahme ist eine Darstellung eines Arrays):

var fs = require('fs'); 
function appendObject(obj){ 
    var configFile = fs.readFileSync('./config.json'); 
    var config = JSON.parse(configFile); 
    config.push(obj); 
    var configJSON = JSON.stringify(config); 
    fs.writeFileSync('./config.json', configJSON); 
} 

appendObject({OnetimeCode : WEAS_Server_NewOneTimeCode}); 
+0

Ich werde es ausprobieren .. danke, (Eine Funktion war genau das, was ich suchte) – medemi68

+0

gab mir "Objekt # hat keine Methode 'push' – medemi68

+0

Es ist kein Array .. – medemi68

Verwandte Themen