Saltar al contenido

JSON a GraphQL SDL

Convierte un documento JSON en tipos GraphQL escritos en Schema Definition Language.

Entrada
Salida

JSON a GraphQL SDL

Pega un objeto JSON o un array de objetos y esta herramienta derivará tipos GraphQL escritos en Schema Definition Language. Es una forma rápida de inicializar un esquema a partir de una respuesta de API real, una exportación de base de datos o un payload de ejemplo, en lugar de escribir manualmente cada campo y tipo.

Los escalares se infieren de los valores JSON: las cadenas se convierten en String, los números enteros se convierten en Int, los decimales se convierten en Float, y verdadero/falso se convierten en Boolean. Un campo llamado "id" se tipifica como ID cuando contiene una cadena o un entero, coincidiendo con la forma en que la mayoría de las APIs de GraphQL identifican registros. Los campos cuyo valor de ejemplo es null se marcan como opcionales; todos los demás campos obtienen el marcador requerido ("!"). Los objetos anidados se convierten en sus propios tipos nombrados, referenciados desde el padre, y los objetos anidados estructuralmente idénticos se fusionan en un único tipo en lugar de duplicarse. Los arrays se convierten en tipos de lista con el tipo de elemento inferido de su contenido.

Dos opciones más dan forma al resultado: activar la opción de escalar personalizado reconoce cadenas de fecha e hora ISO y declara "scalar Date" o "scalar DateTime" en lugar de tratarlas como String simple, y la opción "Generar como" cambia entre "type" (para consultas) e "input" (para argumentos de mutación). Habilitar "Incluir tipo Query" agrega un pequeño tipo Query con un campo que devuelve el tipo raíz, por lo que el esquema está listo para pegar en un servidor o herramienta schema-first tal como está.

Todo se ejecuta localmente en tu navegador — el JSON que pegas nunca se carga en ningún lado. Copia el SDL generado, descárgalo como archivo .txt, o envíalo directamente a la entrada de otra herramienta para seguir trabajando en él.

Preguntas frecuentes

¿Cómo decide si un campo es requerido?
Un campo se marca con "!" (requerido) a menos que su valor de ejemplo en el JSON sea null, en cuyo caso se deja como opcional.
¿Cómo se manejan los objetos anidados y las listas?
Cada objeto anidado se convierte en su propio tipo GraphQL nombrado referenciado desde su padre. Las formas anidadas idénticamente estructuradas se reutilizan como un único tipo. Los arrays se convierten en tipos de lista, con el tipo de elemento tomado del contenido del array.
¿Qué hace "Detectar ID desde el campo 'id'"?
Cuando está habilitado, cualquier campo literalmente llamado "id" que contenga una cadena o un número entero se tipifica como el escalar ID integrado de GraphQL en lugar de String o Int.
¿Puedo generar tipos de entrada GraphQL en lugar de tipos de objeto?
Sí. Cambia "Generar como" a "input" para obtener bloques input Name { … }, útil para argumentos de mutación. El envoltorio Query solo se agrega para la salida de "type", ya que un campo Query no puede devolver un tipo input.
¿Se carga mi JSON en algún lado?
No. La conversión se ejecuta completamente en tu navegador — tu JSON nunca sale de tu dispositivo.