Для разработчиков / JSON

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

Вставьте пример JSON и получите определения структур Go с экспортируемыми именами полей, ожидаемыми линтерами Go аббревиатурами и тегами json — код готов для вставки в проект.

JSON в структуру Go: Конвертер читает JSON в вашем браузере и создаёт структуру для каждого объекта. Ключи превращаются в экспортируемые имена в CamelCase, а аббревиатуры, например ID, URL и HTTP, записываются заглавными буквами, как рекомендует golint. Исходный ключ каждого поля сохраняется в теге json, а форматирование выполняется так, как это сделал бы gofmt. Объекты в массиве объединяются: поэтому ключ, отсутствующий в некоторых объектах, получает omitempty, а ключ, имеющий значение null только иногда, становится указателем. Целые числа преобразуются в int64, если в том же месте не встречается десятичное число — тогда используется float64. Работает на 100% локально в вашем браузере, файлы на сервер не загружаются.

Запуски
В вашем браузере
Стоимость
Бесплатно · без регистрации
Доступность
Готово к использованию
JSON в структуру GoЛокальная обработка

Полностью работает в браузере

Перейти

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 для проверки данных на границе системы.

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

  1. Вставьте объект или массив JSON, например ответ API.
  2. Задайте имя типа верхнего уровня и выберите отдельные или вложенные структуры.
  3. Скопируйте код 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{}), принимающий любое значение. Когда настоящий тип известен, замените его вручную.

Бесплатный инструмент · запусков: в вашем браузере · аккаунт не нужен