Что это такое
JSON Lines (также JSONL или NDJSON) хранит по одному JSON-значению в строке. Это излюбленный формат для логов, выгрузок данных, потоковых API, массовой загрузки в BigQuery и Elasticsearch и наборов данных для машинного обучения, например файлов дообучения OpenAI: программа может читать или дописывать записи по одной, не загружая весь файл.
Однако многие инструменты ждут один массив JSON. Этот конвертер превращает JSON Lines в отформатированный массив JSON, а массив JSON — обратно в JSON Lines с одной компактной записью на строку.
Как пользоваться
- Выберите Направление: JSON Lines → JSON или JSON → JSON Lines.
- Вставьте данные, загрузите файл
.jsonl,.ndjsonили.jsonлибо нажмите Пример. - Для вывода JSON выберите отступ в 2 или 4 пробела либо Компактно — в одну строку.
- Скопируйте или скачайте результат либо нажмите Использовать как ввод, чтобы преобразовать обратно.
Если строка не является корректным JSON, в ошибке указываются номер строки и столбец, так что можно сразу перейти к сломанной записи — удобно, когда в логе среди тысяч записей одна обрезана.
Пример
Эти три строки JSON Lines:
{"id": 1, "event": "signup"}
{"id": 2, "event": "login"}
{"id": 3, "event": "logout"}
превращаются в такой массив JSON:
[
{
"id": 1,
"event": "signup"
},
{
"id": 2,
"event": "login"
},
{
"id": 3,
"event": "logout"
}
]
В обратном направлении каждый элемент массива записывается в отдельную строку без пробелов, а файл заканчивается переводом строки.
Что когда использовать
JSON Lines подходит, когда записи создаются или обрабатываются по одной: дозапись в логи, потоковая выдача результатов, разделение большого набора данных между воркерами, обработка построчными утилитами вроде grep, head и wc -l. Массив JSON нужен, когда программе требуется вся коллекция сразу: конфигурационный файл, тестовые данные или тело ответа REST-эндпоинта.
Частые вопросы
› Чем отличаются JSONL, NDJSON и JSON Lines?
Это названия одного и того же формата: одно полное JSON-значение на строку, строки разделены переводом строки. JSON Lines (.jsonl) и newline-delimited JSON (.ndjson) отличаются только названием и расширением.
› Допускаются ли пустые строки?
При чтении пустые строки и завершающий перевод строки пропускаются. Окончания строк Windows (CRLF) и метка BOM в UTF-8 тоже обрабатываются.
› Мой файл — отформатированный JSON, объект занимает несколько строк. Почему ошибка?
В JSON Lines каждое значение должно помещаться в одну строку. Если на входе обычный массив JSON, переключите направление на JSON → JSON Lines; если это последовательность отформатированных объектов, сначала поместите их в массив.
› Меняет ли преобразование числа или порядок ключей?
Нет. Значения и порядок ключей сохраняются; меняются только пробелы. Очень большие целые числа за пределами безопасного диапазона JavaScript (около 9 квадриллионов) могут потерять точность, как и в любом браузерном JSON-инструменте.