В JSONL оседают журналы разговоров, оценочные наборы, обучающие данные и пакетные задания — и ломается он не так, как обычный JSON. Одна плохая строка среди пятидесяти тысяч хороших; пустая строка в конце; файл, который на самом деле оказался отформатированным массивом с запятой в конце каждой строки. «Некорректный JSON» о файле в сорок мегабайт не помогает никому, поэтому здесь всё сообщается построчно, с тем номером, который показывает редактор. Пустые строки пропускаются, а не считаются ошибками, а случай массива, выдающего себя за JSONL, распознаётся и предлагается к преобразованию одним щелчком.
Возможности
Каждый сбой привязан к номеру строки
Пустые строки пропускаются, не сбивая нумерацию
Распознаёт отформатированный массив, вставленный как JSONL, и преобразует его
Все ключи по записям и сколько записей их несут
Фильтр по пути с точками или по всей записи
Пролистывайте записи по одной, отформатированными
Преобразует в массив JSON и обратно
Перетащите файл или вставьте текст
Как использовать Просмотр и проверка JSONL
Перетащите файл .jsonl или вставьте его
Проверьте счётчики корректных и некорректных строк
Отфильтруйте до нужных записей
Пролистайте их или экспортируйте массивом
Пример
Ввод
line 2: not json
Результат
Unexpected token o in JSON at position 1
Остальные 49 999 строк по-прежнему разобраны и пригодны.
Частые ошибки и устранение неполадок
Сбоят все строки. — Скорее всего, это отформатированный массив JSON, а не JSONL. Этот случай распознаётся, и предлагается преобразование.
Номера строк не совпадают с редактором. — Должны совпадать — пустые строки пропускаются при разборе, но нумерацию не сдвигают.
Мой путь фильтра ничего не находит. — Пути через точку, индексы массивов цифрами: messages.0.content. Список ключей над фильтром показывает, что есть на самом деле.
Огромный файл тормозит. — Всё разбирается в браузере, поэтому очень большой файл ограничен памятью. Разделить быстрее, чем ждать.
Часто задаваемые вопросы
Что такое JSONL?
По одному законченному значению JSON на строку, без запятых между ними и без обрамляющих скобок. Он хорошо стримится и дописывается, поэтому его используют журналы и наборы данных, и одна испорченная строка не делает файл недействительным.
Почему мой файл похож на JSONL и всё же сбоит?
Почти всегда потому, что это отформатированный массив: объект растянут на несколько строк, и в конце каждой стоит запятая. Это корректный JSON и некорректный JSONL, и здесь это распознаётся.
Как работает фильтр по пути?
Сегменты через точку, индексы массивов цифрами. Значение по этому пути ищется как подстрока без учёта регистра.
Мешают ли пустые строки в конце?
Нет. Файл, оканчивающийся переводом строки, — это нормально и правильно; пустые строки считаются отдельно и никогда не сообщаются как ошибки.
Мой файл отправляется куда-нибудь?
Нет. Всё разбирается в браузере, и это важно, если помнить, что обычно лежит в JSONL: журналы разговоров и обучающие данные — среди самых чувствительных файлов команды.
Связанные инструменты
Проверка датасета — Проверьте chat-датасет JSONL на ошибки, срывающие обучение.