Convertir JSON en schéma GraphQL — Numio
Génère des types objet en SDL GraphQL à partir d’un exemple JSON. La racine devient AutogeneratedMainType, chaque objet imbriqué ou tableau d’objets devient un type nommé, et tous les éléments d’un tableau sont fusionnés en un seul type.
Préparer les types d’un wrapper GraphQL autour d’un endpoint REST existant à partir de l’une de ses réponses.
JSON
GraphQL
Quand l’utiliser
- Préparer les types d’un wrapper GraphQL autour d’un endpoint REST existant à partir de l’une de ses réponses.
- Obtenir un schéma de départ pour un serveur mock ou un prototype schema-first à partir de données d’exemple.
Mode d’emploi
- Collez dans l’éditeur de gauche un objet JSON, ou un tableau d’objets fusionnés en un seul type racine, ou utilisez le bouton de chargement de fichier pour ouvrir un fichier UTF-8.
- Vérifiez les types générés : les noms viennent des clés (posts devient Posts) et les scalaires sont associés à String, Int, Float ou Boolean.
- Copiez le SDL, puis ajoutez ! aux champs obligatoires, passez les champs id en ID et renommez AutogeneratedMainType.
Objet JSON
{
"id": "u_1",
"name": "Ada",
"age": 36,
"score": 9.5,
"nickname": null,
"tags": ["math"],
"address": { "city": "London" },
"posts": [{ "id": 7, "title": "Notes" }]
}Schéma GraphQL (SDL)
type AutogeneratedMainType {
id: String
name: String
age: Int
score: Float
nickname: String
tags: [String]
address: Address
posts: [Posts]
}
type Address {
city: String
}
type Posts {
id: Int
title: String
}Détails et limites
Les champs sont fusionnés sur tous les éléments du tableau. null et les tableaux vides deviennent String et [String] ; Int mélangé à Float donne Float, et les autres conflits retombent sur String.
Les noms de types viennent des clés (posts devient Posts). Si une même clé contient des objets de formes différentes, le suivant est nommé d’après son parent (par exemple AB) au lieu d’écraser le précédent.
Aucun ! (non null), ID, type Query ni type input n’est généré. Les entiers hors de la plage 32 bits sont typés Float, car le Int de GraphQL est sur 32 bits.
S’exécute dans votre navigateur et le résultat est formaté avec Prettier ; un JSON invalide affiche l’erreur d’analyse.
FAQ
Puis-je convertir un tableau JSON à la racine ?
Oui, s’il contient des objets : tous les éléments sont fusionnés dans AutogeneratedMainType, donc les champs présents dans certains éléments seulement sont inclus. Un tableau racine de valeurs simples est rejeté, car il n’a pas de champs.
Pourquoi mon champ id est-il String et non ID ?
Les types viennent uniquement de la valeur JSON : un id chaîne devient String et un nombre devient Int. Passez-le à la main en ID:.
Quel type reçoivent les valeurs null ?
String, puisqu’une valeur null ne porte aucun type. Remplacez-la par une vraie valeur d’exemple si le champ est un nombre ou un objet.