Регистрация как JSON - Стандарт - это несколько корневых элементов, почему?

Я ищу, чтобы написать файл журнала в формате JSON.

Посмотрев несколько библиотек для форматирования вдохновения и лучших практик (Winston для Node.JS, опция ведения журнала JSON в Apache и т. Д.), Я заметил, что почти все они пишут несколько корневых элементов по сравнению с использованием Array или Root Element.

Пример:

{"time": "2012-09-20T20: 27: 59Z", "level": "info", "message": "Hello World"} {"time": "2012-09-20T21: 37: 59Z", "level": "info", "message": "Hello Again"}

против

[{"time":"2012-09-20T20:27:59Z","level":"info","message":"Hello World"},{"time":"2012-09-20T21:37:59Z","level":"info","message":" Снова привет "}]

Почему это делается, если технически недопустимо наличие в JSON нескольких корневых элементов?

2 ответа

При ведении журнала вы продолжаете добавлять новые записи журнала. Как бы вы узнали, когда закрывать массив? Когда ваша регистрация завершена? Вы можете начать журнал с пустого массива, [], но затем при добавлении записи вам нужно будет продолжить поиск в файле, чтобы найти правильное место, и проверить, нужна ли запятая или нет.

Или вы просто записываете каждую запись как отдельный корневой объект, и каждый раз, когда вы записываете что-то, оно является независимым и добавляется в конец файла. Это намного проще.

Журнал не является отдельным объектом JSON, т. Е. Весь журнал не формирует допустимую строку JSON. Это последовательность независимых объектов JSON. Отдельные записи - это единицы, которые вы должны учитывать, а не весь журнал в целом.

Потому что журнал увеличивается с каждой секундой.

Без корневого элемента новый журнал может просто дополняться старыми элементами. Если есть корневой элемент или массив, вам нужно запросить новые элементы журнала и добавить его.

Итак, у вас есть правильный выбор.

Другие вопросы по тегам