Перейти к содержанию

JSON в GraphQL SDL

Преобразуйте JSON-документ в типы GraphQL, написанные на языке описания схемы.

Входные данные
Выходные данные

JSON в GraphQL SDL

Вставьте объект JSON или массив объектов, и этот инструмент выведет типы GraphQL, написанные на языке описания схемы. Это быстрый способ разработать схему на основе реального ответа API, экспорта из базы данных или примера полезной нагрузки вместо того, чтобы вводить каждое поле и тип вручную.

Скаляры определяются на основе значений JSON: строки становятся String, целые числа становятся Int, десятичные числа становятся Float, а true/false становятся Boolean. Поле с именем "id" типизируется как ID, если оно содержит строку или целое число, что соответствует тому, как большинство API GraphQL идентифицируют записи. Поля, чьё значение в примере равно null, помечаются как необязательные; все остальные поля получают маркер требуемого поля ("!"). Вложенные объекты становятся собственными именованными типами, на которые ссылается родитель, и структурно идентичные вложенные объекты объединяются в один тип вместо дублирования. Массивы становятся типами списков с типом элемента, выведенным из их содержимого.

Два дополнительных параметра формируют результат: включение пользовательского скалярного параметра распознаёт ISO-строки даты и даты-времени и объявляет "scalar Date" или "scalar DateTime" вместо того, чтобы рассматривать их как простую String, а выбор "Генерировать как" переключается между "type" (для запросов) и "input" (для аргументов мутаций). Включение опции "Включить тип Query" добавляет небольшой тип Query с одним полем, возвращающим корневой тип, так что схема готова вставить на сервер или в инструмент на основе схемы как есть.

Всё работает локально в вашем браузере — JSON, который вы вставляете, никогда не загружается никуда. Скопируйте созданный SDL, загрузите его как файл .txt или отправьте прямо в вход другого инструмента, чтобы продолжить работу.

FAQ

Как она определяет, является ли поле обязательным?
Поле помечается "!" (обязательное), если его значение в JSON не null; в противном случае оно остаётся необязательным.
Как обрабатываются вложенные объекты и списки?
Каждый вложенный объект становится собственным типом GraphQL, на который ссылается его родитель. Идентичные вложенные структуры повторно используются как один тип. Массивы становятся типами списков, где тип элемента берётся из содержимого массива.
Что делает опция "Определять ID из поля 'id'"?
Если включено, любое поле буквально с именем "id", которое содержит строку или целое число, типизируется как встроенный скаляр GraphQL ID вместо String или Int.
Можно ли генерировать типы графического входа вместо типов объектов?
Да. Переключите "Генерировать как" на "input", чтобы получить блоки input Name { … }, полезные для аргументов мутаций. Обёртка Query добавляется только для выходного "type", поскольку поле Query не может возвращать тип input.
Мой JSON загружается куда-нибудь?
Нет. Преобразование выполняется полностью в вашем браузере — ваш JSON никогда не покидает ваше устройство.