LlmFiles
Конвертер в Markdown
LlmFiles/Гайды/JSON в Markdown

JSON в Markdown

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

Обновлено 22.10.2026 · LlmFiles · English version

Три разных результата из одного файла

Конвертер не пытается свести любой JSON к таблице. Сначала файл разбирается, и от формы данных зависит, что вы увидите. Первая строка всегда одинаковая: имя файла становится заголовком первого уровня — по нему потом понятно, откуда взялся кусок текста.

Форма файлаЧто получитсяКогда это удобно
Массив объектовpipe-таблица, колонки — ключи первого объектавыгрузка из API, список заказов, логи, справочники
Объект верхнего уровнясекции ## для вложенных объектов, поля — списком ключ: значение, массивы объектов — таблицамикарточка заказа, ответ вебхука, конфиг
Массив простых значений, строка, пустой файл, битый JSONкод-блок json с исходным содержимымструктуру нельзя показать таблицей — лучше сохранить как есть

Массив объектов превращается в таблицу

Самый частый случай: выгрузка, где каждая запись — объект с одинаковым набором полей. На входе обычный ответ API:

[
  {"id": 1, "name": "Ноутбук", "price": 74990,
   "tags": ["электроника", "техника"], "stock": {"msk": 4, "spb": 0}},
  {"id": 2, "name": "Мышь", "price": 2490,
   "tags": [], "stock": {"msk": 12, "spb": 7}}
]

На выходе — Markdown-таблица, которую понимает GitHub, GitLab, Obsidian, любой рендерер и любая модель:

| id | name | price | tags | stock |
| --- | --- | --- | --- | --- |
| 1 | Ноутбук | 74990 | ["электроника", "техника"] | {"msk": 4, "spb": 0} |
| 2 | Мышь | 2490 | [] | {"msk": 12, "spb": 7} |

Колонки берутся из ключей первого объекта. Вложенные массивы и объекты остаются в ячейке JSON-строкой: разложить их по плоским колонкам без потери смысла нельзя, а молча выбрасывать — нечестно. Пустой массив так и выглядит — [].

Объект верхнего уровня — это секции, а не таблица

Если файл начинается с фигурной скобки, сверху таблицы не будет. Вложенные объекты становятся заголовками второго уровня, их поля — списком, а массивы объектов внутри — таблицами на своём месте:

- **order_id:** 42

## customer

- **name:** Alex
- **city:** Самара

**items:**

| id | name | price | tags | stock |
| --- | --- | --- | --- | --- |
| 1 | Ноутбук | 74990 | ["электроника", "техника"] | {"msk": 4, "spb": 0} |

Когда получится код-блок

Это не ошибка и не потеря данных: содержимое целиком остаётся внутри ```json, файл .md валиден, текст можно отдать модели как есть. Просто структура не превратилась в разметку.

Где ломается таблица и что делать

СимптомПричинаЧто делать
В строке появились лишние ячейкив значении есть | — это разделитель колонокзаменить на / или экранировать \| до конвертации
Одна запись разорвала таблицу на двеперенос строки внутри значенияубрать переносы или заменить на пробел
Колонки не хватает, в части строк пустоключи берутся из первого объекта, у остальных этого поля нетпоставить первым объект с полным набором ключей
Вложенный объект обрезанв ячейку пишется JSON-строка не длиннее 60 символоввынести вложенность в отдельный файл или развернуть заранее
Длинный текст в ячейке обрезанзначение режется по 100 символовоставить файл в JSON, если важна каждая буква
Строк меньше, чем в исходникев таблицу идут первые 50 записей, дальше пометка «... and N more rows»разбить файл на части или забрать данные через API
Вместо true и null — True и Noneзначения печатаются как в Pythonучитывать, если Markdown потом разбирается скриптом

Порядок действий

  1. Откройте конвертер и перетащите файл .json — регистрация и почта не нужны.
  2. Посмотрите результат: таблица, секции или код-блок — это уже ответ, годится файл как есть или данные надо готовить.
  3. Скопируйте Markdown или скачайте .md и положите туда, где он нужен: вики, репозиторий, корпус для модели, текст задачи.

Файл читается в память процесса и никуда не записывается: на диске его нет, в базу он не попадает, сторонние API не вызываются. В журнал пишется только факт события — тип, размер, хеш IP. Если документы нельзя отдавать наружу вообще, есть вариант on-prem внутри вашей сети.

YAML, TOML и XML ведут себя иначе

Форматы данных ведут себя по-разному: .yaml, .yml и .toml отдаются код-блоком, а .xml разбирается по структуре — повторяющиеся записи (item, entry) приезжают таблицей, вложенность уходит разделами. YAML при этом пересобирается заново: комментарии исчезают, а списки печатаются в стиле PyYAML — без отступа под ключом. Это нормально, если файл нужен человеку, и плохо, если YAML потом должен вернуться в прод.

app:
  name: markit
  port: 8090
features:
- oauth
- sso

Нужна именно таблица из конфига — сначала переведите данные в JSON с массивом объектов, потом конвертируйте.

Когда Markdown из JSON только вредит

Если файл — входные данные для скрипта или аргумент инструмента, таблица всё испортит: типы теряются, значения обрезаются, вложенность превращается в строку. Markdown нужен человеку и модели, а не программе. Для больших наборов (тысячи записей) правильнее оставить JSON и показать модели несколько строк как пример — иначе таблица съест весь контекст и ничего не объяснит.

JSON Lines и выгрузки из логов

Выгрузки часто приходят не одним массивом, а построчно — по объекту в строке, расширение .jsonl или .ndjson. Такой файл конвертер не узнаёт: расширения нет в списке поддерживаемых, поэтому содержимое уходит в общий текстовый разбор и вы получаете код-блок с исходником. Таблицы не будет — и это лучше, чем молча потерять половину строк.

Лечится одной строкой в терминале: собрать строки в массив и переименовать файл в .json.

python3 -c "import json; rows=[json.loads(l) for l in open('dump.jsonl', encoding='utf-8') if l.strip()]; json.dump(rows, open('dump.json', 'w', encoding='utf-8'), ensure_ascii=False)"

После этого файл разбирается как обычный массив объектов и превращается в таблицу — с теми же ограничениями на 50 строк и длину значений.

Лимиты и что с Pro

Бесплатно — 25 файлов в сутки с одного IP, каждый до 25 МБ, без регистрации; счётчик обнуляется раз в сутки. Платных тарифов нет: деньги мы не принимаем, платёжной формы нет. Нужен больший лимит, API-ключ или установкав своей сети — оставьте заявку на странице тарифов, напишем, когда будет готово.

Для автоматизации есть POST /api/convert: та же логика, результат лежит в поле markdown ответа. Примеры на curl, Python и JavaScript — в документации API.

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

Ключи берутся из первого объекта — а если у записей разный набор полей?

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

Можно ли развернуть вложенный JSON в плоскую таблицу?

Только частично. Массив объектов внутри верхнего объекта становится отдельной таблицей, а вложенный объект внутри записи — JSON-строкой в ячейке, не длиннее 60 символов. Готового flatten в конвертере нет.

Почему таблица закончилась на 50 строках?

Это ограничение вывода: пятьдесят записей ещё читаемы, пять тысяч — нет. Дальше идёт пометка «... and N more rows». Полный набор забирайте через API или разбейте файл на части.

Файл не разобрался и стал код-блоком. Почему?

Скорее всего мешает BOM в начале файла, лишняя запятая или комментарий — JSON их не допускает. Конвертер в таком случае честно отдаёт исходник код-блоком, а не выдумывает структуру.

Данные куда-то отправляются?

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

Это бесплатно?

Да: 25 файлов в сутки с одного IP, до 25 МБ, без регистрации. Pro пока в разработке — деньги не принимаются, но заявку оставить можно на странице тарифов.

Сконвертировать файл

Перетащите документ в окно — получите markdown с заголовками и таблицами. Бесплатно 5 файлов в сутки, до 25 МБ.