Générateur de JSON Schema

Générer automatiquement des définitions JSON Schema conformes aux normes à partir de données JSON

Entrée JSON
Lignes: 1 | Caractères: 0
Sortie JSON Schema
// Le JSON Schema sera généré automatiquement
Propriétés: 0 | Lignes: 1

Options de configuration

Schema ID
Définir un identifiant unique pour le Schema, généralement au format URI, utilisé pour référencer et identifier le Schema dans les grands systèmes
Tous les champs requis
Lorsqu'activé, toutes les propriétés sont ajoutées au tableau required, ce qui signifie que ces champs doivent exister dans les données
Ajouter des valeurs par défaut
Générer automatiquement la propriété default basée sur les valeurs réelles dans le JSON exemple, utile pour les fichiers de configuration
Ajouter des descriptions de champ
Ajouter automatiquement le champ description pour chaque propriété, décrivant le type de données et la source, utile pour la documentation
Mode strict
Activer additionalProperties: false pour interdire les propriétés supplémentaires non définies, assurant une cohérence stricte de la structure des données

Qu'est-ce que JSON Schema ?

JSON Schema est une spécification pour décrire et valider des structures de données JSON. Il définit des règles pour la structure, les types de données, les contraintes et est largement utilisé pour la validation d'API, la validation de formulaires, la vérification de fichiers de configuration.

Avec JSON Schema, vous pouvez :

  • Validation des données : Vérifier que les données JSON correspondent au format et aux contraintes attendus
  • Génération de documentation : Générer automatiquement la documentation API et les définitions de types
  • Intelligence de code : Obtenir une complétion intelligente et une vérification de type dans les IDE
  • Tests automatisés : Valider automatiquement le format des données de réponse dans les tests

Cet outil prend en charge la spécification JSON Schema Draft-07, déduisant intelligemment les objets imbriqués, les types de tableau, les valeurs enum et autres structures complexes.

Comment utiliser

  1. Collez des données JSON dans la zone de saisie gauche, ou cliquez sur Exemple pour charger des données d'exemple
  2. Configurez les options : définissez l'ID Schema, choisissez si tous les champs sont requis, ajoutez des valeurs par défaut, etc.
  3. La définition JSON Schema correspondante est générée automatiquement à droite
  4. Cliquez sur Copier pour copier le Schema généré dans le presse-papiers
  5. Utilisez le Schema pour la validation d'API, la validation de formulaires ou la vérification de fichiers de configuration

Exemples

Schema d'objet simple

输入 JSON:
{
  "name": "张三",
  "age": 28,
  "isActive": true
}

输出 JSON Schema:
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "description": "Object with 3 properties",
  "properties": {
    "name": {
      "type": "string",
      "description": "String value"
    },
    "age": {
      "type": "integer",
      "description": "Number value"
    },
    "isActive": {
      "type": "boolean",
      "description": "Boolean value"
    }
  },
  "required": ["name", "age", "isActive"]
}

Objets imbriqués et tableaux

输入 JSON:
{
  "user": {
    "id": 1,
    "profile": {
      "avatar": "url",
      "skills": ["JS", "TS"]
    }
  }
}

输出 JSON Schema:
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "user": {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "profile": {
          "type": "object",
          "properties": {
            "avatar": { "type": "string" },
            "skills": {
              "type": "array",
              "items": { "type": "string" }
            }
          }
        }
      }
    }
  }
}

Exemple de validation de données

使用 Ajv 验证数据:

const Ajv = require('ajv');
const ajv = new Ajv();

const schema = { /* 生成的 Schema */ };
const validate = ajv.compile(schema);

const validData = { name: "李四", age: 25, isActive: false };
const invalidData = { name: "王五", age: "三十" };

console.log(validate(validData));    // true
console.log(validate(invalidData));  // false
console.log(validate.errors);        // 错误详情

Questions fréquentes (FAQ)

Q : Quels sont les cas d'utilisation courants pour JSON Schema ?

A : JSON Schema est principalement utilisé pour : la validation de requêtes/réponses API, la validation de données de formulaires, la vérification de format de fichiers de configuration, les contraintes de documents de base de données, la validation de données de tests automatisés, la configuration d'autocomplétion IDE. C'est un outil important pour la spécification des données dans le développement web moderne.

Q : Quelle version de Schema cet outil génère-t-il ?

A : Cet outil génère un Schema suivant la spécification JSON Schema Draft-07, la version la plus largement prise en charge, compatible avec la plupart des bibliothèques de validation et des chaînes d'outils.

Q : Comment les types de tableau complexes sont-ils gérés ?

A : L'outil analyse automatiquement la structure des éléments du tableau. Si les éléments sont des objets, une définition items est générée ; si les types sont incohérents, anyOf ou oneOf représente plusieurs types possibles ; les tableaux vides génèrent une définition items vide.

Q : Que signifie le champ required ?

A : required est un tableau de chaînes listant les noms de propriétés qui doivent exister. Si une propriété est dans required, elle ne peut pas manquer lors de la validation. Les propriétés non dans required sont optionnelles.

Q : Comment utiliser le Schema généré dans des projets ?

A : Utilisez des bibliothèques de validation comme Ajv, jsonschema pour la validation des données. Dans Node.js : const Ajv = require('ajv'); const validate = new Ajv().compile(schema); const valid = validate(data);. Les frameworks frontend comme React, Vue ont des composants de validation de formulaire prenant en charge JSON Schema.

Q : Que fait additionalProperties: false ?

A : Ce paramètre interdit les propriétés supplémentaires non définies dans le Schema. Utile pour les scénarios nécessitant un contrôle strict de la structure des données, empêchant la pollution accidentelle des champs, mais peut causer des problèmes de compatibilité si trop strict.

Q : Puis-je ajouter des règles de validation personnalisées ?

A : Oui, modifiez manuellement le Schema après génération pour ajouter plus de contraintes. JSON Schema prend en charge des mots-clés de validation riches : minimum/maximum (plage numérique), minLength/maxLength (longueur de chaîne), pattern (correspondance regex), enum (valeurs enum), format (formats prédéfinis comme email, uri), etc.

Q : Comment générer un JSON Schema à partir de types TypeScript ?

A : Cet outil déduit le Schema à partir de données JSON. Pour générer à partir de types TypeScript, utilisez des outils comme typescript-json-schema, ou créez d'abord des données JSON d'exemple puis utilisez cet outil.