DT Dev Tools

Конвертер JSON в Go struct — генератор структур

Преобразуйте JSON в структуры Go онлайн: теги json, omitempty, указатели для необязательных полей и функции unmarshal. Бесплатно и приватно в браузере.

🔒 Работает полностью в вашем браузере — ничего не загружается

Реклама

Генерируйте структуры Go из JSON

Писать структуры Go вручную для большого ответа API долго и легко ошибиться. Этот конвертер JSON в Go делает это мгновенно: вставьте образец JSON — и он сгенерирует экспортируемые типы struct с правильным регистром имён полей и тегами json, сопоставляющими каждое поле с исходным ключом. Вложенные объекты становятся отдельными именованными структурами, массивы — срезами, целые и дробные числа различаются как int64 и float64, а временные метки ISO 8601 распознаются как time.Time. Результат готов к использованию с encoding/json без дополнительных правок.

Инструмент работает на quicktype, который просматривает каждый элемент каждого массива, прежде чем выбрать тип. Если у одного элемента списка есть поле, которого нет у остальных, это поле становится указателем, и нулевое значение и отсутствующее значение остаются различимыми — деталь, которую конвертеры с одним проходом часто упускают.

Параметры, важные для Go

Задайте имя package, чтобы файл компилировался там, куда вы его положите. Включите omitempty, когда вы также сериализуете эти структуры обратно в JSON и хотите, чтобы отсутствующие необязательные поля оставались отсутствующими. По умолчанию генератор добавляет небольшие вспомогательные функции Unmarshal… и Marshal вокруг корневого типа; отметьте Structs only, если вы предпочитаете сами вызывать json.Unmarshal и вам нужны только типы. Переименуйте корневую структуру из Root в нужное доменное имя — например, Repository или WebhookEvent.

Как получить лучший результат

Дайте конвертеру репрезентативный образец: массив с несколькими элементами, заполненные необязательные поля и вложенные объекты с данными, а не пустые. Пустые массивы и значения null не дают выводу типов ничего для работы, и он откатывается к interface{}. После вставки кода запустите gofmt, проверьте числовые типы там, где образец может не показывать полного диапазона, и замените универсальные строки собственными типами, где ваш API документирует фиксированные значения. Поскольку вся обработка происходит в вашем браузере, внутренние или клиентские данные никогда не покидают ваш компьютер.

Как использовать

  1. Вставьте JSONВставьте ответ API или любой документ JSON либо загрузите образец.
  2. Выберите параметрыЗадайте имя корневой структуры и package и решите, нужны ли omitempty и вспомогательные функции.
  3. Скопируйте структурыСкопируйте код Go или скачайте файл .go и запустите gofmt, как обычно.

Часто задаваемые вопросы

Добавляет ли он теги json для struct?
Да. Каждое поле получает тег `json:"key"`, сохраняющий исходный ключ JSON, а ,omitempty к необязательным полям можно добавить одним флажком.
Как обрабатываются необязательные поля и null?
Поля, которых нет или которые равны null в некоторых образцах, становятся типами-указателями, например *string, так что отсутствующее значение можно отличить от нулевого.
Что делают вспомогательные функции?
По умолчанию вывод содержит вспомогательные функции UnmarshalRoot и Marshal. Отметьте Structs only, чтобы получить только объявления типов.
Отправляется ли мой JSON на сервер?
Нет. Конвертация выполняется в вашем браузере с помощью quicktype, скомпилированного в JavaScript; ничего не загружается.
Реклама