TVTablesViewer Открыть

Большой JSON и почему он всё подвешивает

Файл на 300 МБ открывается пять минут и съедает несколько гигабайт памяти. Это не лень разработчиков редактора — это свойство формата, и обойти его можно только сменой формата.

Обновлено 2026-09-20 · формат JSON

Почему JSON нельзя читать по частям

JSON — единое выражение. Формально, чтобы убедиться, что документ корректен, нужно дойти до последней скобки. Нельзя взять середину файла и разобрать её отдельно: непонятно, на каком уровне вложенности вы находитесь и не оборван ли текст посреди строки.

Отсюда следствие: разбор идёт целиком, и в памяти оказывается весь документ. Причём не в виде текста, а в виде объектов — а они занимают в разы больше.

Практическое правило: разобранный JSON занимает в 5–10 раз больше исходного файла. Файл на 300 МБ — это два-три гигабайта памяти, и вкладка браузера на этом заканчивается.

Что можно сделать

Наши границы, названные честно

Разбор идёт в браузере, поэтому ограничения жёстче, чем у настольной программы. Свыше 128 МБ мы предупреждаем о расходе памяти и времени. Свыше 512 МБ — отказываемся открывать и говорим почему, вместо того чтобы подвесить вкладку и потерять то, что было открыто рядом.

Для JSON Lines таких ограничений нет: строки читаются по одной, и предел — пять миллионов записей.

Как понять, что файл слишком большой, заранее

Ориентир простой: возьмите размер файла и умножьте на восемь. Если получившееся число больше свободной оперативной памяти — открывать не стоит ничем, кроме потокового инструмента.

Отдельно стоит посмотреть на структуру: файл в 200 МБ из миллиона мелких записей и файл в 200 МБ из тысячи огромных объектов ведут себя по-разному. Второй случай обычно тяжелее, потому что в нём глубокая вложенность.

Частые вопросы

Почему VS Code открывает, а браузер нет?

Редактор показывает текст и подсвечивает синтаксис, не строя объектную модель. Как только вы включите форматирование или свёртку — он тоже задумается.

Поможет ли 64-разрядная программа?

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

Можно ли посмотреть только первые записи большого файла?

У обычного JSON — нет, разбор всё равно идёт целиком. У JSON Lines — да, это его главное достоинство.

Файл не покидает ваш компьютер. Разбор идёт в браузере, в фоновом потоке. Политика безопасности страницы запрещает отправлять данные на сторонние адреса — это проверяется в инструментах разработчика. После первого открытия приложение работает и без интернета.
Открыть приложение

Ещё по теме