JSON в Go
Генерация структур Go с тегами JSON из JSON
Вставьте JSON или загрузите пример, чтобы сгенерировать код Go.
Что генерирует JSON to Go
JSON to Go превращает ответ API или любой пример JSON в определения структур Go, готовые для encoding/json. Каждое экспортируемое поле получает тег json:"key", поэтому переименованные поля по-прежнему декодируются. Ключи, которые нельзя выразить в теге структуры (пустые ключи, кавычки, запятые или символы вроде эмодзи), исключаются через json:"-" и перечисляются в заметках, а не сопоставляются молча с неверным именем.
Как использовать
- 1.Вставьте JSON, загрузите или перетащите файл .json либо загрузите один из примеров.
- 2.Задайте имя корневой структуры и пакет (по умолчанию main).
- 3.Включите или выключите указатели и omitempty; в разделе «Дополнительно» можно встроить вложенные структуры.
- 4.Прочитайте заметки под выводом, затем скопируйте код или скачайте models.go.
Как выводятся типы
- •Проверяется каждый элемент массива, а не только первый, и объекты одного массива объединяются.
- •Ключ, отсутствующий в части объектов, необязателен; ключ, который иногда равен null, допускает null. Эти случаи различаются.
- •1 и 2.5 в одной позиции расширяются до дробного числа; о других смешениях выводится заметка.
- •Пустые массивы и значения, которые всегда равны null, не дают сведений о типе, поэтому используется обобщённый тип, а заметка объясняет причину.
- •Сопоставление типов: строка → string, целое число → int64 (за его пределами uint64 или json.Number), дробное число → float64, логическое значение → bool, массив → []T, объект → struct, неизвестное или смешанное → any.
- •При включённых указателях необязательные или допускающие null скаляры и структуры становятся *T; срезы и any никогда не бывают указателями, потому что у них уже есть значение nil.
omitempty, ограничения и конфиденциальность
omitempty добавляется только к полям, которые в примере отсутствовали или были null. При кодировании он также отбрасывает нулевые значения, например 0, "" и false, поэтому это не то же самое, что «необязательное». Пример показывает, как данные выглядели один раз, а не полный контракт API. Проверьте необязательные поля, обобщённые типы и разрядность чисел, прежде чем полагаться на код. Ввод ограничен 5 МБ и 256 уровнями вложенности; начиная с 2 МБ генерация ждёт нажатия кнопки «Сгенерировать». Всё выполняется в браузере, JSON никуда не загружается.
