@VelkinVV

Как создать JSON из файла в Node js?

Хочу написать удобную читалку логов, которые создаю с помощью winston на сервере express.
К конфигурации winston установлено format.json(),
На выходе получаю файл с содержанием вида
{"level":"info","message":"Pass an object and this works","service":"def-meta","timestamp":"2022-06-07 13:54:56"}
{"level":"info","message":"Pass an object and this works","service":"def-meta","timestamp":"2022-06-07 13:54:56"}

Как видно, это не полноценный JSON, т.к. результаты не помещены в массив и не разделены запятой между собой.
Файл читаю через fs, но с результатом сделать толком ничего не могу, т.к. JSON.parse выдаёт ошибку на второй объект.
Пробовал через replace добавить запятую между объектами, но ни к чему хорошему это не приводит, получаю строку с запятой, которую тоже не могу преобразовать в JSON.
Как сделать, чтобы результат чтения файла преобразовать к нормальному виду?
[
	{"level":"info","message":"Pass an object and this works","service":"def-meta","timestamp":"2022-06-07 13:54:56"},
	{"level":"info","message":"Pass an object and this works","service":"def-meta","timestamp":"2022-06-07 13:54:56"}
]
  • Вопрос задан
  • 283 просмотра
Решения вопроса 1
@VelkinVV Автор вопроса
Вот так решил эту задачу.
const infoFunc = fs.readFileSync( 'path/to/file.log', 'utf8' );
infoFunc.split('\r\n').filter(Boolean).map((el) => JSON.parse(el)),
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@StockholmSyndrome
JSON.parse('[' + data.split('\n').join(',') + ']')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы