Откуда всё началось

Несколько лет назад мои друзья активно занимались разработкой на Unity. Я периодически помогал, и в какой-то момент вместе с другом обратили внимание на одну раздражающую вещь: огромное количество времени уходило не на саму разработку, а на редактирование JSON-файлов.

Конфиги роботов, полей, заданий, параметры, локализация, уроки — всё это JSON. И всё это нужно было либо править руками в блокноте, рискуя сломать структуру одной лишней запятой, либо писать очередной одноразовый скрипт-конвертер, который через неделю уже никто не помнит где лежит.

«Слушай, было бы круто иметь что-то вроде Excel, но для JSON» — примерно так звучала идея.

Я подумал: звучит несложно, сделаю за выходные. Классика.

Первая версия появилась на WPF — работала, закрывала базовые потребности, но была сырой. Потом жизнь закрутила, проект лёг на полку.

А недавно потребность возникла снова — и сразу с двух сторон. Мой друг вместе с командой разрабатывает симулятор робототехники Robocad — серьёзный инструмент для соревнований и обучения. Задания для соревнований, уроки, сценарии — всё это создаётся в JSON-конфигах. Плюс параллельно появилась потребность в конфигах для приборов и оборудования.

Так появился CraftHub.


Какую проблему решает

Если вы когда-либо работали с JSON-файлами не как с API-ответами, а как с данными, которые нужно активно редактировать — вы поймёте боль.

Представьте таблицу из 200 предметов в игре. Каждый предмет — объект с 15 полями: название, тип, урон, редкость, цена, иконка, эффекты… Вы хотите поднять урон всем мечам на 10%. В обычном текстовом редакторе это либо руками, либо regex-магия, либо писать скрипт.

CraftHub предлагает другой подход: работайте с JSON как с таблицей, а не как с текстом.


Два режима работы

Табличный режим

Основной режим. Ваши данные — это таблица: строки и столбцы. Каждый столбец — это поле схемы с определённым типом. Вы видите все записи сразу, можете редактировать ячейки прямо в таблице, сортировать, искать по значению.

Table
Table

Это именно то ощущение работы с Excel, только под капотом — JSON.

JSON-редактор

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

Editor
Editor

Умный импорт JSON

Одна из первых вещей, которую хочется сделать — загрузить уже существующий JSON. CraftHub умеет автоматически определять типы полей при импорте.

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

Mapper
Mapper

Генерация 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 и устал делать это в текстовом редакторе


Попробовать

Проект открытый. Исходники и релизы:

github.com/c3n9/CraftHub

Буду рад звёздочке, issue с идеями и любому фидбеку. Проект живёт и развивается — впереди ещё много планов.


Если узнали себя в описании проблемы — значит, инструмент для вас. Попробуйте, и дайте знать что думаете.

Комментарии (26)


  1. gerbert_MX
    27.04.2026 21:28

    Пожалуйста: https://jsoneditoronline.org/

    пользуюсь - даже не вспомню сколько, больше 8 лет точно

    Кроссплатформенно, можно расшарить и поделится ссылкой, есть куча других фишек. и бесплатно


    1. crackanddie
      27.04.2026 21:28

      не грузится без впн чета


    1. SemenovYar
      27.04.2026 21:28

      Да, пользуюсь этим редактором, но вот незадача без впн у меня не открывается, и редактирования табличного как в excel там тоже нет, а эту штуку обязательно попробую, потому что тоже часто сталкиваюсь с редактированием json


    1. c3n9 Автор
      27.04.2026 21:28

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


    1. Newbilius
      27.04.2026 21:28

      Без VPN недоступен, но можно использовать этим: https://jsonformatter.org/json-editor


  1. neroxt
    27.04.2026 21:28

    Есть оптимизация под большие json?


    1. c3n9 Автор
      27.04.2026 21:28

      Для удобного пользования реализован поиск, также хочу отметить, что максимальная вложенность (глубина) json свойств 50


  1. FedRez
    27.04.2026 21:28

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


    1. c3n9 Автор
      27.04.2026 21:28

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


    1. ShigolevArtem
      27.04.2026 21:28

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


      1. c3n9 Автор
        27.04.2026 21:28

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


  1. holgw
    27.04.2026 21:28

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



    1. c3n9 Автор
      27.04.2026 21:28

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


      1. beliakov
        27.04.2026 21:28

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


        1. c3n9 Автор
          27.04.2026 21:28

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


    1. c3n9 Автор
      27.04.2026 21:28

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


  1. 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 и т.п.).


    1. fe3dback
      27.04.2026 21:28

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


    1. c3n9 Автор
      27.04.2026 21:28

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


  1. slava0135
    27.04.2026 21:28

    Кажется, что такие штуки лучше делать в виде плагинов для редакторов, чтобы не городить велосипед с синтаксисом или навигацией по файлам.

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


  1. iMic
    27.04.2026 21:28

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


    1. c3n9 Автор
      27.04.2026 21:28

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


    1. c3n9 Автор
      27.04.2026 21:28

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


  1. NarkkoZ
    27.04.2026 21:28

    Для теста решил загрузить json который формируется при сборке проекта - CraftHub.deps.json.
    Относительно небольшой json 28кб, всего 376 полей, но открывается очень долго. У меня он открывался 10 секунд. Решил глянуть в чем дело. А оказалось что оно для каждого добавленного при импорте json поля вызывает RebuildColumns. То есть для открытия этого json оно 378 раз создало и удалило все колонки в датагриде. Один раз при создании vm, 376 раз при OnPropertiesChanged, и еще один раз при OnColumnsChanged. Большой json такой программкой будет открываться, вероятно, очень долго.
    А все потому что в ImportFromPathAsync

    foreach (var field in mappedFields)
        Properties.Add(new JsonPropertyDefinition { Name = field.FieldName, FieldType = field.SelectedType });


    1. c3n9 Автор
      27.04.2026 21:28

      Мне нравится ваше замечание, добавил ObservableCollection с отложенным уведомлением об изменениях, что позволяет перестроить 1 раз, а не на каждое уведомление
      https://github.com/c3n9/CraftHub/blob/master/CraftHub/Helpers/BulkObservableCollection.cs