Перейти до вмісту

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

Перетворіть зразок JSON на визначення структури Go з виведеними типами та тегами.

Введення
Вихід

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

Вставте зразок JSON, і цей інструмент створить відповідні визначення структури Go з тегами json. Він виводить int, float64, string, bool і null для кожного поля, створює іменовані або вбудовані структури для вкладених об'єктів і визначає типи зрізів для масивів — включаючи зрізи об'єктів, які мають власну структуру, яку можна повторно використовувати.

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

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

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

FAQ

Він обробляє вкладені об'єкти та масиви?
Так. Вкладені об'єкти стають власною іменованою структурою (або вбудованою анонімною, якщо ви її вмикаєте), масиви стають зрізами, а зріз об'єктів повторно використовує одну структуру, коли кожен елемент має однакову форму.
Що відбувається, коли об'єкти масиву не мають однакових полів?
Якщо увімкнено опцію "Об'єднати форми елементів масиву" (за замовчуванням), інструмент об'єднує всі поля, які він бачив у елементах, в одну структуру, позначаючи поля, які були відсутні в деяких елементах, як необов'язкові. Вимкніть це, і інструмент повертається до динамічного типу елемента.
Чи можу я контролювати, як називаються теги JSON?
Так, за допомогою параметра формату тегу JSON: збережіть вихідний ключ точно так, як він відображається у зразку, або перетворіть кожен ключ на snake_case або camelCase.
Який тип я отримаю для поля, яке інструмент не може вивести?
interface{}, псевдонім any або json.RawMessage, залежно від вибраного параметра — RawMessage корисна, коли ви хочете самостійно розкодувати це поле пізніше.
Мій JSON завантажується кудись?
Ні. Створення структури виконується повністю локально у вашому браузері — JSON, який ви вставляєте, ніколи не покидає ваш пристрій.