Для разработчиков / JSON
JSON в структуру Go
Вставьте пример JSON и получите определения структур Go с экспортируемыми именами полей, ожидаемыми линтерами Go аббревиатурами и тегами json — код готов для вставки в проект.
JSON в структуру Go: Конвертер читает JSON в вашем браузере и создаёт структуру для каждого объекта. Ключи превращаются в экспортируемые имена в CamelCase, а аббревиатуры, например ID, URL и HTTP, записываются заглавными буквами, как рекомендует golint. Исходный ключ каждого поля сохраняется в теге json, а форматирование выполняется так, как это сделал бы gofmt. Объекты в массиве объединяются: поэтому ключ, отсутствующий в некоторых объектах, получает omitempty, а ключ, имеющий значение null только иногда, становится указателем. Целые числа преобразуются в int64, если в том же месте не встречается десятичное число — тогда используется float64. Работает на 100% локально в вашем браузере, файлы на сервер не загружаются.
- Категория
- Инструменты для разработчиков
- Запуски
- В вашем браузере
- Стоимость
- Бесплатно · без регистрации
- Доступность
- Готово к использованию
Полностью работает в браузере
Перейти
type User struct {
ID int64 `json:"id"`
UserName string `json:"user_name"`
AvatarURL string `json:"avatar_url"`
Score float64 `json:"score"`
Tags []string `json:"tags"`
Address Address `json:"address"`
}
type Address struct {
City string `json:"city"`
ZipCode string `json:"zip_code"`
}Для ключей, отсутствующих в некоторых объектах массива, добавляется omitempty; ключи, которые иногда имеют значение null, становятся указателями. Проверьте типы по документации API: пример показывает только содержащиеся в нём данные.
От примера к типу
Go декодирует JSON в структуры с помощью encoding/json: каждый ключ сопоставляется с полем по его json-тегу или, если тега нет, по имени без учёта регистра. Заполняются только экспортируемые поля — те, что начинаются с заглавной буквы; поэтому каждое поле здесь начинается с заглавной буквы и сохраняет исходный ключ в своём теге.
Один пример показывает только то, что в нём содержится. Список пользователей, в котором у одного нет email, сообщает конвертеру, что email необязателен; один объект этого показать не может. Если у вас есть несколько репрезентативных объектов, вставьте их в массив и проверьте результат по документации API. Сначала структуру длинного ответа поможет увидеть форматтер JSON.
Другие языки и схемы
Тот же пример можно преобразовать в интерфейсы TypeScript с помощью конвертера JSON в TypeScript — например, для фронтенда, который обращается к тому же API, — или в JSON Schema для проверки данных на границе системы.
Как пользоваться
- Вставьте объект или массив JSON, например ответ API.
- Задайте имя типа верхнего уровня и выберите отдельные или вложенные структуры.
- Скопируйте код Go.
Конфиденциальность и ограничения
Ваш JSON преобразуется в браузере и никуда не загружается.
Похожие инструменты
Часто задаваемые вопросы
Почему user_id превращается в UserID, а не в UserId?
В стиле Go аббревиатуры записываются единообразно, поэтому используются UserID, APIKey и AvatarURL. Конвертер применяет список аббревиатур из golint — линтера, который сделал это правило популярным.
Когда поле получает omitempty или указатель?
Если пример представляет собой массив объектов и в некоторых из них отсутствует ключ, поле получает omitempty, поэтому при маршалинге не заполняется, когда оно пустое. Если в некоторых объектах ключ имеет значение null, поле становится указателем, и nil может обозначать null. Вы также можете добавить omitempty ко всем полям.
Почему используются int64 и float64?
В JSON есть только один числовой тип. Значение без десятичной точки преобразуется в int64, а значение с дробной частью — в float64. Если ID может превышать 2^53 или на самом деле является строкой, измените тип вручную: пример показывает только содержащиеся в нём значения.
Что происходит с null или пустыми массивами?
Если данных недостаточно, поле, которое всегда имеет значение null, или пустой массив получают тип any (interface{}), принимающий любое значение. Когда настоящий тип известен, замените его вручную.
Бесплатный инструмент · запусков: в вашем браузере · аккаунт не нужен