OpenReplay Logo
12k
12k

Конвертер JSON в Go

Преобразуйте любой образец JSON в типизированные структуры Go с тегами json — обработка выполняется локально в вашем браузере, ничего не отправляется.

Обрабатывается локально

Об этом инструменте

Структуры Go — идиоматичный способ моделирования JSON в Go: каждое экспортируемое поле несёт тег структуры `json:"..."`, который стандартный пакет `encoding/json` использует для маршалинга и анмаршалинга данных. Этот конвертер разбирает образец JSON, выводит тип Go для каждого значения — `int` для целых чисел, `float64` для десятичных, `string`, `bool`, `interface{}` для null или неизвестного и `[]T` для массивов — и выдаёт экспортируемые имена полей в PascalCase, сохраняя исходный ключ в теге. Массивы объектов объединяются в единую форму, чтобы сгенерированная структура включала каждый ключ, встретившийся среди элементов.

Используйте его, чтобы создать типы запроса и ответа для HTTP-API, смоделировать файл конфигурации или полезную нагрузку вебхука, или превратить образец документа из NoSQL-хранилища в типизированные структуры, которые вы можете вставить прямо в свой пакет. Назовите корневую структуру, включите `,omitempty` в тегах и выберите между отдельными именованными типами для вложенных объектов или встроенными анонимными структурами — удобно для быстрых одноразовых моделей по сравнению с переиспользуемыми общими типами.

Всё выполняется на стороне клиента в вашем браузере — ваш JSON разбирается локально и никогда не отправляется на сервер.

Часто задаваемые вопросы

Как типы JSON сопоставляются с типами Go?

Целые числа становятся `int`, десятичные — `float64`, строки — `string`, булевы значения — `bool`, а `null` (или что-либо неизвестное) становится `interface{}`. Массивы становятся срезом Go `[]T` типа элемента, а вложенные объекты становятся именованными структурами (или встроенными анонимными структурами, если вы включите эту опцию).

Почему мои имена полей вроде user_id превращаются в UserID?

Go экспортирует поля, начинающиеся с заглавной буквы, поэтому ключи преобразуются в PascalCase. Распространённые сокращения — ID, URL, API, HTTP — сохраняются полностью в верхнем регистре, чтобы соответствовать соглашениям golint, поэтому `user_id` становится `UserID`, а `api_url` становится `APIURL`. Исходный ключ сохраняется в теге структуры json.

Что делает параметр omitempty?

Добавление `,omitempty` к тегу структуры указывает `encoding/json` исключить это поле из маршалированного JSON, когда оно содержит своё нулевое значение (0, "", false, nil или пустой срез/map). Это влияет только на кодирование, а не на декодирование.