Qué hace esta herramienta
Una muestra JSON pasa a ser tipos SDL de GraphQL, uno por objeto.
{ "id": 1, "name": "Ada", "tags": ["admin"], "address": { "city": "Paris" } }
type Root {
id: Int!
name: String!
tags: [String!]!
address: Address!
}
type Address {
city: String!
}
[String!]! se lee de fuera adentro: la lista nunca es nula, y ningún elemento lo es tampoco. Las dos mitades vienen de la muestra, que traía una lista y cadenas dentro.
Solo tipos: esto todavía no es un esquema
No hay Query, ni Mutation, ni directivas. Una carga JSON dice cómo son los datos, no qué campos expone un servidor ni cómo se llaman. Añade el punto de entrada tú:
type Query {
root: Root!
}
Sin él, el archivo describe tipos que no se le pueden pedir a nadie.
Lo que el SDL no sabe decir se nombra, no se finge
nully los valores desconocidos pasan a un escalarJSONpropio, declarado arriba y dejado a tu implementación. El SDL no tiene un tipo «cualquier cosa».- Un array heterogéneo pasa a
[JSON]!por la misma razón: una lista de formas mezcladas no es un tipo lista de GraphQL. - Un entero fuera de 32 bits pasa a
BigInt, otro escalar propio. ElIntde GraphQL es de 32 bits con signo: un identificador de once cifras no es representable, y un servidor que lo devuelva lanza al serializar. SalíaInt!de todos modos; era un defecto real, encontrado al escribir esta página y corregido. - Un objeto vacío se rechaza.
type A {}no es SDL válido —un tipo debe definir al menos un campo—, así que la conversión se detiene y nombra el tipo en vez de entregarte un esquema que ningún servidor analizará. También se encontró y corrigió aquí.
Los nombres se reparan, las colisiones se separan
Un nombre de GraphQL admite solo letras, dígitos y _, y no empieza por dígito. content-type pasa a content_type, 2fa pasa a _2fa. Cuando dos nombres reparados chocan dentro de un tipo, el segundo lleva sufijo: nada se funde en silencio.
Un escalar en la raíz —42, "texto"— se rechaza: el SDL describe tipos objeto, y ahí no hay nada que describir.
Privado por diseño
Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.