JSON5 и JSONC: JSON с комментариями
Оба диалекта существуют потому, что конфигурация, написанная людьми, нуждается в комментариях и висячих запятых, но их синтаксис и охват экосистемы различаются, поэтому неверный выбор заедает ваш инструментарий.
JSON5, JSONC, JSON Lines и NDJSON решают реальные задачи — комментарии, висячие запятые и потоковую обработку — и приносят с собой проблемы совместимости и выбора.
Статей: 6Оба диалекта существуют потому, что конфигурация, написанная людьми, нуждается в комментариях и висячих запятых, но их синтаксис и охват экосистемы различаются, поэтому неверный выбор заедает ваш инструментарий.
Одно значение JSON на строку даёт вам дозаписываемость, потоковость и изоляцию ущерба одной строкой; цена — отсутствие общей структуры, поэтому валидация должна происходить построчно.
RFC 7464 использует разделитель 0x1E для потоковой передачи текстов JSON, которые можно читать и писать сразу. Рассматривает правила, отличие от NDJSON и реализацию «разделить, затем разобрать».
Конфигурационным файлам нужны комментарии, даты и многострочный текст — вот где JSON не справляется. Сравните JSON, TOML, YAML и CSON и посмотрите, что конвертация всегда теряет.
MessagePack, CBOR и BSON сжимают JSON в байты. Сравните байтовую стоимость, обработку int64 и двоичных данных и получите чёткую границу, когда переключение того стоит.
Если весь .jsonl-файл отдать JSON.parse или json.load и получить ошибку — почти всегда виноват не файл, а способ чтения. В статье: стандартные паттерны проверки и построчного чтения, команды взаимного преобразования с JSON-массивом, таблица шести типов битых строк и корректное потребление NDJSON из потокового HTTP-ответа.