CraftHub — или как я устал редактировать JSON вручную и написал редактор

от автора

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

Несколько лет назад мои друзья активно занимались разработкой на 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 с идеями и любому фидбеку. Проект живёт и развивается — впереди ещё много планов.


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

ссылка на оригинал статьи https://habr.com/ru/articles/1028818/