Перейти к содержанию

JSON в Go структуру

Преобразуйте пример JSON в определения структуры Go с выводимыми типами и тегами.

Входные данные
Выходные данные

JSON в Go структуру

Вставьте пример JSON, и этот инструмент сгенерирует соответствующие определения структуры Go с тегами json. Он выводит int, float64, string, bool и null для каждого поля, создает именованные или встроенные структуры для вложенных объектов и определяет типы срезов для массивов — включая срезы объектов, которые имеют собственную переиспользуемую структуру.

Параметры формируют сгенерированный код. Назовите корневую структуру сами или позвольте инструменту вывести ее. Выберите, как будут написаны теги — сохраните исходный ключ или преобразуйте его в snake_case или camelCase независимо от того, как был назван исходное поле. Включите "Добавить omitempty", чтобы добавить его к каждому тегу, и "Указатели для опциональных полей", чтобы пометить поля, которые отсутствуют или имеют значение null в частях примера с типом указателя. Когда объекты массива имеют немного разные поля, "Объединить формы элементов массива" объединяет их в одну структуру с дополнительными полями, помеченными как опциональные, вместо того, чтобы отказываться от типа элемента. Для значений, которые инструмент не может определить, выберите interface{}, alias any или json.RawMessage для отложенного декодирования.

Это шаг перед написанием клиента API или загрузчика конфигурации на Go: вставьте реальный ответ или пример конфигурации и получите начальную структуру вместо ручного ввода имен полей и тегов. Вложенные структуры могут оставаться как отдельные именованные типы для повторного использования в другом месте пакета или отображаться встроенными, когда форма используется только один раз. Для полей, чей тег больше не соответствует исходному ключу JSON, доступен комментарий с исходным ключом.

Все выполняется локально в вашем браузере — JSON, который вы вставляете, который может содержать реальные ответы API или внутреннюю конфигурацию, никогда не загружается. Скопируйте результат, загрузите его как файл .txt или переместите вывод обратно в ввод, чтобы уточнить пример и повторно создать.

FAQ

Он обрабатывает вложенные объекты и массивы?
Да. Вложенные объекты становятся собственной именованной структурой (или встроенной анонимной, если вы ее включите), массивы становятся срезами, а срез объектов повторно использует одну структуру, когда каждый элемент имеет одинаковую форму.
Что произойдет, если объекты массива не имеют все одинаковые поля?
Если включена опция "Объединить формы элементов массива" (по умолчанию), инструмент объединяет все поля, которые он видел в элементах, в одну структуру, отмечая поля, которые отсутствовали в некоторых элементах, как опциональные. Отключите эту опцию, и инструмент вернется к динамическому типу элемента.
Могу ли я контролировать, как называются теги JSON?
Да, с помощью параметра формата тега JSON: сохраните исходный ключ ровно так, как он отображается в примере, или преобразуйте каждый ключ в snake_case или camelCase.
Какой тип я получу для поля, которое инструмент не может вывести?
interface{}, alias any или json.RawMessage, в зависимости от выбранного параметра — RawMessage полезна, когда вы хотите самостоятельно декодировать это поле позже.
Мой JSON загружается куда-нибудь?
Нет. Создание структуры работает полностью локально в вашем браузере — JSON, который вы вставляете, никогда не покидает ваше устройство.