Próbuję zapisać plik JSON przy użyciu węzła z danych pętli, np .:
let jsonFile = require('jsonfile');
for (i = 0; i < 11; i++) {
jsonFile.writeFile('loop.json', "id :" + i + " square :" + i * i);
}
outPut w loop.json to:
id :1 square : 1
ale chcę plik wyjściowy taki jak poniżej (a także), jeśli ponownie uruchomię ten kod, powinien dodać ten nowy wynik jako elementy w tym samym istniejącym pliku JSON:
{
"table":[
{
"Id ":1,
"square ":1
},
{
"Id ":2,
"square ":3
},
{
"Id ":3,
"square ":9
},
{
"Id ":4,
"square ":16
},
{
"Id ":5,
"square ":25
},
{
"Id ":6,
"square ":36
},
{
"Id ":7,
"square ":49
},
{
"Id ":8,
"square ":64
},
{
"Id ":9,
"square ":81
},
{
"Id ":10,
"square ":100
}
]
}
Chcę użyć tego samego pliku, który utworzyłem za pierwszym razem, ale za każdym razem, gdy uruchamiam ten kod, nowe elementy powinny być dodawane w tym samym pliku
const fs = require('fs');
let obj = {
table: []
};
fs.exists('myjsonfile.json', function(exists) {
if (exists) {
console.log("yes file exists");
fs.readFile('myjsonfile.json', function readFileCallback(err, data) {
if (err) {
console.log(err);
} else {
obj = JSON.parse(data);
for (i = 0; i < 5; i++) {
obj.table.push({
id: i,
square: i * i
});
}
let json = JSON.stringify(obj);
fs.writeFile('myjsonfile.json', json);
}
});
} else {
console.log("file not exists");
for (i = 0; i < 5; i++) {
obj.table.push({
id: i,
square: i * i
});
}
let json = JSON.stringify(obj);
fs.writeFile('myjsonfile.json', json);
}
});
źródło
Wypróbuj następujący program. Być może spodziewasz się tego wyniku.
Zapisz ten program w pliku javascript, powiedzmy, square.js.
Następnie uruchom program z wiersza polecenia, używając polecenia
node square.js
Po prostu zastępuje istniejący plik nowym zestawem danych za każdym razem, gdy wykonuje się polecenie.
Happy Coding.
źródło
powinieneś przeczytać plik za każdym razem, gdy chcesz dodać nową właściwość do json, a następnie dodać nowe właściwości
źródło
Powyższy przykład jest również poprawny, ale podam prosty przykład:
źródło
próbować
źródło
Do formatowania plik json daje
spaces
opcję, którą możesz przekazać jako parametr:Lub użyj
jsonfile.spaces = 4
. Przeczytaj szczegóły tutaj .Nie sugerowałbym pisania do pliku za każdym razem w pętli, zamiast tego konstruuj obiekt JSON w pętli i zapisuj do pliku poza pętlą.
źródło
Dla podejścia synchronicznego
źródło