Превратите пример JSON в структуры Go с тегами json, int или float64, указателями и omitempty
Работает в вашем браузере. Ничего из того, что вы вводите, никуда не отправляется. Проверено 16 октября 2026 г..Вставьте пример JSON и получите типы struct на Go с тегами json, готовые для json.Unmarshal. Целые числа становятся int, а свыше 2 147 483 647 — int64, любая дробь делает поле float64; значение, которое иногда равно null, становится указателем, а ключи, которых нет в некоторых объектах, получают omitempty.
Эта страница переведена машинным способом с английского оригинала. Перевод ещё не проверен человеком, поэтому ориентируйтесь на английскую версию. Читать английский оригинал
Вставьте пример JSON, например ответ API, в левое поле.
Типы Go появляются по мере ввода: одна структура на объект, с тегами json и именами в стиле Go, например UserID.
Выберите «Вложенные структуры inline» или omitempty для каждого поля, если они нужны, и задайте имя корневого типа.
Нажмите «Копировать» или «Скачать», чтобы сохранить файл .go, и добавьте свою строку package.
Go декодирует JSON в структуры, и каждому полю нужен правильный тип и тег json:"..." с именем ключа. Этот конвертер пишет такие типы по примеру, так что ответ API на 200 строк превращается в правильный Go за одну вставку.
Как выбираются типы.
| Значение JSON | Тип Go |
|---|---|
| "text" | string |
| true / false | bool |
| 42 (только целые числа) | int или int64 за пределами 32 бит |
| 4.5 (встретилась любая дробь) | float64 |
| null и ещё какой-то тип | указатель, например *string |
| только null или смешанные виды | any |
| [ ... ] | срез, например []string |
| { ... } | именованная или встроенная структура |
Массивы объектов. Все объекты массива сливаются в одну структуру, поэтому поле, которое есть только в некоторых из них, всё равно присутствует, с ,omitempty в теге. Два объекта с точно одинаковыми ключами и типами используют одно имя типа.
Имена. Ключи становятся экспортируемыми именами в стиле Go: user_id становится UserID, avatar_url — AvatarURL, по списку аббревиатур golint. Ключ, начинающийся с цифры, получает N впереди; два ключа, дающие одно имя, нумеруются. Ключ с символами, которые тег не может содержать, например запятой, помечается комментарием, потому что encoding/json его не сопоставит.
Параметры. «Вложенные структуры inline» пишет один тип с анонимными структурами внутри, что подходит для разового ответа. omitempty для каждого поля подходит структурам, которые вы также сериализуете. Корневой тип называется Root, если вы не дадите ему имя.
Каждый результат проверен обратным чтением Go и декодированием примера по правилам encoding/json. Ничто из вставленного не покидает браузер.
Вставьте пример JSON в конвертер, и рядом появится структура Go, с тегом json у каждого поля и вложенными объектами в виде отдельных типов. Скопируйте её в свой пакет и декодируйте через json.Unmarshal(data, &v), где v — переменная корневого типа.
Используйте int, когда каждое значение в примере целое, и float64, когда у какого-то значения есть дробная часть, потому что encoding/json отказывается записывать 4.5 в int. Конвертер выбирает для каждого поля отдельно и берёт int64, когда целое число больше 2 147 483 647.
Поле, которое встречается и как null, и со значением, становится указателем, например *string, так что nil означает null, а пустая строка остаётся отличной от него. Поле, которое всегда было null, становится any, поскольку пример не говорит, что оно содержало бы иначе.
С omitempty json.Marshal пропускает поле, когда в нём нулевое значение: пустая строка, 0, false, nil или пустой срез. Конвертер добавляет его к ключам, которых нет в некоторых объектах массива, а переключатель добавляет его ко всем полям.
Стиль Go, который проверяют golint и большинство линтеров, пишет аббревиатуры заглавными: ID, URL, HTTP, API, JSON и ещё около сорока. Тег json сохраняет исходный ключ, user_id или userId, так что декодирование по-прежнему точно совпадает с API.
Нет. Преобразование выполняется в вашем браузере без запросов к серверу, и JSON не сохраняется, так что ответы API с токенами или личными данными остаются на вашем устройстве. Закройте вкладку, и ничего не останется.
Ставки и правила меняются; проверьте источник, прежде чем полагаться на цифру.
Всё ещё не получается? Задайте вопрос об инструменте «Конвертер JSON в структуры Go» и ответить может любой, кто знает. Учётная запись не нужна.