NDJSON (JSON с разделением по строкам)
NDJSON (Newline Delimited JSON) — формат текстовых данных, в котором каждая строка содержит отдельный валидный JSON-объект. Этот формат идеален для потоковой обработки, логирования и работы с наборами данных, так как строки можно обрабатывать независимо.
MIME-тип
application/x-ndjson
Тип
Текст
Сжатие
Без потерь
Преимущества
- + Streamable — process one record at a time without loading the entire file
- + Appendable — add new records by appending lines
- + Works with Unix tools (grep, head, tail, wc)
- + Standard for Elasticsearch bulk, BigQuery, and data pipelines
Недостатки
- − No standard for the overall file (no top-level schema)
- − Cannot represent a single JSON object spanning multiple lines
- − Less compact than binary formats for large datasets
Когда использовать .NDJSON
Используйте NDJSON для структурированных логов, потоковых API, дампов Elasticsearch, импорта/экспорта данных и любых задач, где JSON необходимо обрабатывать потоково.
Технические детали
Каждая строка NDJSON — самодостаточный JSON-документ, завершённый символом \n. Нет корневого массива или разделителей-запятых. Это позволяет: добавлять записи в файл, передавать записи потоком, параллельно обрабатывать строки и обрабатывать файлы строка за строкой без полной загрузки в память.
История
NDJSON возник органично в сообществе разработчиков как практическое решение для потоковой передачи JSON. Форматы JSONL (JSON Lines) и NDJSON по сути идентичны. Этот паттерн широко используется в Elasticsearch (bulk API), структурированном логировании и потоках данных.