#javascript #node.js #json
#javascript #node.js #json
Вопрос:
У меня есть этот JSON на сервере: [{"a":1}, {"a":2}]
и интересно, есть ли возможность добавить объект в конце, вместо этого, если переписать весь файл на сервере. Я нашел обходной путь, убрал скобки и добавил их после загрузки с сервера.
newObj= {'a':3};
fs.appendFile(theServerFile, ',' newObj, ...) ;
Комментарии:
1. Одним словом, нет. весь JSON должен быть прочитан, проанализирован, обновлен и записан обратно в файл. Выполнение в противном случае, скорее всего, приведет к недопустимому JSON
2. Редактирование данных JSON в строке — крайне плохая идея.
3. Не говоря уже о ваших проблемах с блокировкой файлов.
Ответ №1:
Я бы сделал следующее:
const fs = require('fs');
fs.readFile('./jsonFile.html', function read(err, data) {
if (err) {
throw err;
}
processFile( JSON.parse(data) );
});
function processFile(data) {
data.push(newObj);
fs.writeFileSync('./jsonFile.html', data);
}
Извлеките текущее содержимое, обновите его и запишите заново.
Надеюсь, это поможет!
Комментарии:
1. в вашем ответе есть две проблемы: 1. вы должны проанализировать данные файла в объект JSON перед обработкой. 2. если вы добавите данные к исходному файлу подобным образом, это добавит второй набор данных к исходному файлу
2. Ваш код добавляет обновленный JSON в файл, а не перезаписывает его
3. что ж, теперь вы не ответили на первоначальный вопрос об использовании
fs.appendFile
🙂