Estou tentando escrever o arquivo JSON usando o nó a partir de dados de loop, por exemplo:
let jsonFile = require('jsonfile');
for (i = 0; i < 11; i++) {
jsonFile.writeFile('loop.json', "id :" + i + " square :" + i * i);
}
outPut in loop.json é:
id :1 square : 1
mas eu quero um arquivo de saída como este (abaixo) e também se eu executar esse código novamente ele deve adicionar essa nova saída como elementos no mesmo arquivo JSON existente:
{
"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
}
]
}
Quero usar o mesmo ficheiro que criei da 1ª vez, mas sempre que executar esse código devem ser adicionados novos elementos nesse mesmo ficheiro
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);
}
});
Se este arquivo json ganhou'não se torne muito grande com o tempo que você deve tentar:
Criar um objeto javascript com a matriz de tabelas nele
var obj = {
Mesa: []
};
Acrescente alguns dados como
obj.table.push({id: 1, quadrado:2});
Converta-o de um objeto para string com stringify
var json = JSON.stringify(obj);
use fs para escrever o arquivo no disco
var fs = require('fs');
fs.writeFile('myjsonfile.json', json, 'utf8', callback);
Se você quiser anexá-lo, leia o arquivo json e converta-o de volta para um objeto
fs.readFile('myjsonfile.json', 'utf8', function readFileCallback(err, data){
se (err){
console.log(err);
} else {
obj = JSON.parse(data); //sobretudo um objeto
obj.table.push({id: 2, quadrado:3}); //add alguns dados
json = JSON.stringify(obj); //convertê-lo de volta para json
fs.writeFile('myjsonfile.json', json, 'utf8', callback); // escreva-o de volta
}});
Isto irá funcionar para dados com um máximo de 100 MB de eficácia. Acima deste limite, você deve usar um motor de banco de dados.
ACTUALIZAR:
Crie uma função que retorna a data atual (ano+mês+dia) como uma string. Crie o arquivo chamado esta string + .json. o módulo fs tem uma função que pode verificar a existência do arquivo chamado fs.stat(path, callback). Com isto, você pode verificar se o arquivo existe. Se ele existe, use a função ler se ele's não, use a função criar. Use a string de data como o caminho porque o arquivo será nomeado como a data de hoje + .json. a callback conterá um objeto stats que será nulo se o arquivo não existir.
Por favor, tente o seguinte programa. Você pode estar à espera desta saída.
var fs = require('fs');
var data = {}
data.table = []
for (i=0; i <26 ; i++){
var obj = {
id: i,
square: i * i
}
data.table.push(obj)
}
fs.writeFile ("input.json", JSON.stringify(data), function(err) {
if (err) throw err;
console.log('complete');
}
);
Salve este programa em um arquivo javascript, digamos, square.js.
Depois execute o programa a partir do prompt de comando utilizando o comando `node square.js'.
O que ele faz é, simplesmente sobrescrever o arquivo existente com um novo conjunto de dados, toda vez que você executar o comando.
Feliz Codificação.
você deve ler o arquivo, toda vez que quiser adicionar uma nova propriedade ao json, e então adicionar as novas propriedades
var fs = require('fs');
fs.readFile('data.json',function(err,content){
if(err) throw err;
var parseJson = JSON.parse(content);
for (i=0; i <11 ; i++){
parseJson.table.push({id:i, square:i*i})
}
fs.writeFile('data.json',JSON.stringify(parseJson),function(err){
if(err) throw err;
})
})