Откуда всё началось
Несколько лет назад мои друзья активно занимались разработкой на Unity. Я периодически помогал, и в какой-то момент вместе с другом обратили внимание на одну раздражающую вещь: огромное количество времени уходило не на саму разработку, а на редактирование JSON-файлов.
Конфиги роботов, полей, заданий, параметры, локализация, уроки — всё это JSON. И всё это нужно было либо править руками в блокноте, рискуя сломать структуру одной лишней запятой, либо писать очередной одноразовый скрипт-конвертер, который через неделю уже никто не помнит где лежит.
«Слушай, было бы круто иметь что-то вроде Excel, но для JSON» — примерно так звучала идея.
Я подумал: звучит несложно, сделаю за выходные. Классика.
Первая версия появилась на WPF — работала, закрывала базовые потребности, но была сырой. Потом жизнь закрутила, проект лёг на полку.
А недавно потребность возникла снова — и сразу с двух сторон. Мой друг вместе с командой разрабатывает симулятор робототехники Robocad — серьёзный инструмент для соревнований и обучения. Задания для соревнований, уроки, сценарии — всё это создаётся в JSON-конфигах. Плюс параллельно появилась потребность в конфигах для приборов и оборудования.
Так появился CraftHub.
Какую проблему решает
Если вы когда-либо работали с JSON-файлами не как с API-ответами, а как с данными, которые нужно активно редактировать — вы поймёте боль.
Представьте таблицу из 200 предметов в игре. Каждый предмет — объект с 15 полями: название, тип, урон, редкость, цена, иконка, эффекты… Вы хотите поднять урон всем мечам на 10%. В обычном текстовом редакторе это либо руками, либо regex-магия, либо писать скрипт.
CraftHub предлагает другой подход: работайте с JSON как с таблицей, а не как с текстом.
Два режима работы
Табличный режим
Основной режим. Ваши данные — это таблица: строки и столбцы. Каждый столбец — это поле схемы с определённым типом. Вы видите все записи сразу, можете редактировать ячейки прямо в таблице, сортировать, искать по значению.

Это именно то ощущение работы с Excel, только под капотом — JSON.
JSON-редактор
Для сложных полей типа object и array встроен полноценный редактор JSON. Нажимаете на ячейку — открывается окно с подсветкой синтаксиса, где можно написать произвольную вложенную структуру. Это удобно для полей, которые сами по себе содержат сложные данные.

Умный импорт JSON
Одна из первых вещей, которую хочется сделать — загрузить уже существующий JSON. CraftHub умеет автоматически определять типы полей при импорте.
Загружаете файл → приложение анализирует структуру → предлагает схему с определёнными типами для каждого поля. Не согласны с автоматикой? Любой тип можно изменить вручную перед импортом. Поддерживаются все базовые типы: string, number, bool, а также object и array для вложенных структур.

Генерация C#-класса и обратно
Это та фича, ради которой многие Unity-разработчики и захотят попробовать инструмент. (На этом моменте может напомнить базу данных)
Из схемы → в C# класс. Описали структуру данных в таблице — одной кнопкой экспортируете готовый C#-класс. Никакой ручной работы: берёте файл, кидаете себе в проект, вуаля.
Из C# класса → в данные. И наоборот: уже есть класс с публичными свойствами? Импортируете его в CraftHub — приложение автоматически строит схему по public свойствам. Дальше просто заполняете данные в таблице и экспортируете JSON, который идеально соответствует вашей модели.
Это особенно удобно когда схема данных уже определена в коде, а нужно быстро наполнить её содержимым — для тестов, для балансировки, для начального контента.
Кросс-платформенность
Приложение написано на Avalonia UI — это означает, что оно работает на:
Windows
macOS
Linux
Один и тот же инструмент у всей команды, вне зависимости от устройства.
Обновления прямо из приложения
Никаких «зайди на сайт, скачай новую версию, установи поверх». CraftHub умеет проверять и устанавливать обновления самостоятельно — достаточно нажать одну кнопку в интерфейсе. Актуальная версия всегда под рукой.
Все релизы доступны здесь: github.com/c3n9/CraftHub/releases
Что упрощает работу на практике
Не нужно следить за структурой вручную — схема определяет формат, данные невозможно случайно сломать
Поиск по значению — мгновенная фильтрация по любому тексту во всех ячейках
Множественный выбор строк — дублировать, удалять, копировать сразу несколько записей
Копирование строк как JSON — выделил нужные записи, скопировал в буфер обмена в виде готового JSON-массива или отдельных объектов
Несколько вкладок — работайте с несколькими файлами одновременно
Undo / Redo — полная история изменений с Ctrl+Z / Ctrl+Y
Кому это будет полезно
Unity-разработчикам — конфиги предметов, уровней, врагов, диалогов, локализации
Game designers — редактировать баланс без программиста, просто открыл файл и изменил
Разработчикам железа и embedded — конфиги приборов, параметры прошивок
Всем, кто хранит табличные данные в JSON и устал делать это в текстовом редакторе
Попробовать
Проект открытый. Исходники и релизы:
Буду рад звёздочке, issue с идеями и любому фидбеку. Проект живёт и развивается — впереди ещё много планов.
Если узнали себя в описании проблемы — значит, инструмент для вас. Попробуйте, и дайте знать что думаете.
Комментарии (26)

FedRez
27.04.2026 21:28А еще удобная фича при работе с Json файлами - это иметь возможность сравнивать однотипные json файлы( имеющие схожую структуру), но с разными данными. Сравнивать , сразу же редактировать и сохранять если надо. Когда Таких файлов больше чем два. Загружаешь в программу 3-4-5 разных файлов и сразу видишь отличия. Очень полезная функция. Когда надо сравнить два файла - это легко. а вот 3 и больше уже сложности.

c3n9 Автор
27.04.2026 21:28Отличная идея, я подумаю, если не трудно, можете создать issue на git hub, чтобы не забылось :)

ShigolevArtem
27.04.2026 21:28...и синхронный скрол при просмотре содержимого нескольких файлов!)

c3n9 Автор
27.04.2026 21:28Но думаю это будет отдельным режимом, просто нужно сделать его максимально гибким под разные варианты использования

holgw
27.04.2026 21:28Спасибо за статью. Концептуально, приложение правильное и нужное, но лично мне для моих нужд не хватает панели навигации по файлам – неудобно открывать файлы по одному, хотелось бы иметь возможность выбрать конкретную папку (директорию проекта) и внутри нее увидеть структуру вложенных директорий и все json’ы в них в виде дерева. Ну и чтобы дальше во время работы можно было оперативно переключаться между файлами в этом дереве.

beliakov
27.04.2026 21:28Для такого сценария подойдет плагин для IDE. Например:
https://marketplace.visualstudio.com/items?itemName=nickdemayo.vscode-json-editor https://marketplace.visualstudio.com/items?itemName=lal.smart-json-editor https://marketplace.visualstudio.com/items?itemName=slaugaus.visual-json

c3n9 Автор
27.04.2026 21:28Здорово! Можете, пожалуйста создать issue на github, чтобы я не забыл об этом. Идея очень крутая

beliakov
27.04.2026 21:28А потом попросят поиск по всем файлам проекта, воркспейсы, интеграцию с git и другие IDE-фичи… Не лучше ли сделать экстеншн для готового IDE?

c3n9 Автор
27.04.2026 21:28Хотел бы обкатать на приложении, самое лучшее собрать воедино, а потом уже и web версию запилить можно и экстеншн, это не проблема

c3n9 Автор
27.04.2026 21:28забыл сказать, есть возможность мульти выбора файлов, они сами раскидаются по воркспейсам, но выгружать придется все равно по одному

fe3dback
27.04.2026 21:28Больше всего в таких штуках нехватает линковки, по этому приходится писать собственные редакторы для контента игр.
Самое простое - в игре у сущностей обычно есть какой-то id (uuid например). Дальше сущности могут ссылатся друг на друга по этим id. К примеру есть 2 сущности: fireball и hero. У "hero" может быть свойство "attackMagic: {uuidOfFireball}"
Было бы круто иметь какой-то meta файл, где для редактора можно было бы расписать relations между сущностями их их тип (1к1, 1кN, NxN и т.п., как в БД), а также какие поля использовать как title для id.
А визуально редактор уже бы рисовал такие поля как enum (selectbox, multibox и т.п.).

fe3dback
27.04.2026 21:28в целом идеальный пример редактора - это DataTable / DataBlueprint / FSturct из unrealEngine. Там внутри это сохраняется в бинарном виде с кучей мусора - но сами редакторы данных - супер удобные.

c3n9 Автор
27.04.2026 21:28Да, раньше в версии wpf была в зародыше похожая штука, думаю в ближайшее время ее доразвить. Можешь создать issue в репозитории, чтобы я со своим рабочим графиком не забыл. Идея топ, согласен будет мега удобно при разработке

slava0135
27.04.2026 21:28Кажется, что такие штуки лучше делать в виде плагинов для редакторов, чтобы не городить велосипед с синтаксисом или навигацией по файлам.
Делал в каком-то смысле похожую штуку для игры Space Station 14 в виде плагина для VSCode: игровые прототипы и сущности ECS задаются декларативно на YAML, а потом конструируются в рантайме на C#. Демки и описание есть в readme: https://marketplace.visualstudio.com/items?itemName=slava0135.robust-yaml

iMic
27.04.2026 21:28Почему нет Portable варианта? Стараюсь лишний раз не захламлять систему лишними установками. Как минимум "на попробовать" точно.

c3n9 Автор
27.04.2026 21:28Вообще не задумывался об этом, постараюсь добавить, спасибо за крутое предложение

c3n9 Автор
27.04.2026 21:28можешь добавить, пожалуйста, issue на git с данным предложением, чтобы не затерялось

NarkkoZ
27.04.2026 21:28Для теста решил загрузить json который формируется при сборке проекта - CraftHub.deps.json.
Относительно небольшой json 28кб, всего 376 полей, но открывается очень долго. У меня он открывался 10 секунд. Решил глянуть в чем дело. А оказалось что оно для каждого добавленного при импорте json поля вызывает RebuildColumns. То есть для открытия этого json оно 378 раз создало и удалило все колонки в датагриде. Один раз при создании vm, 376 раз при OnPropertiesChanged, и еще один раз при OnColumnsChanged. Большой json такой программкой будет открываться, вероятно, очень долго.
А все потому что в ImportFromPathAsyncforeach (var field in mappedFields) Properties.Add(new JsonPropertyDefinition { Name = field.FieldName, FieldType = field.SelectedType });
c3n9 Автор
27.04.2026 21:28Мне нравится ваше замечание, добавил ObservableCollection с отложенным уведомлением об изменениях, что позволяет перестроить 1 раз, а не на каждое уведомление
https://github.com/c3n9/CraftHub/blob/master/CraftHub/Helpers/BulkObservableCollection.cs
gerbert_MX
Пожалуйста: https://jsoneditoronline.org/
пользуюсь - даже не вспомню сколько, больше 8 лет точно
Кроссплатформенно, можно расшарить и поделится ссылкой, есть куча других фишек. и бесплатно
crackanddie
не грузится без впн чета
SemenovYar
Да, пользуюсь этим редактором, но вот незадача без впн у меня не открывается, и редактирования табличного как в excel там тоже нет, а эту штуку обязательно попробую, потому что тоже часто сталкиваюсь с редактированием json
c3n9 Автор
Спасибо за полезный источник, подгляжу идеи для своего решения. Стал задумываться о веб версии
Newbilius
Без VPN недоступен, но можно использовать этим: https://jsonformatter.org/json-editor