Générateur JSON vers C

Entrée JSON

Chargement de l’éditeur…

C Généré

Configuration

Saisissez du JSON pour générer des structs C

Structs sûrs avec fonctions de gestion mémoire

Comment convertir JSON en C – guide étape par étape

Utilisez ce générateur JSON vers C pour créer des structures C à partir d'échantillons JSON pour les systèmes embarqués, les bibliothèques C et les intégrations de bas niveau.

  1. Étape 1 – Collez un échantillon JSON

    • Collez un objet ou un tableau JSON représentatif dans l'éditeur de gauche.
    • Incluez des objets imbriqués, des tableaux et des champs nullables afin que les types soient correctement déduits.
    • Utilisez Import pour charger JSON à partir d'un fichier, d'une URL ou d'un exemple de données.
  2. Étape 2 – Choisissez les options de structure C

    • Définissez un Struct Name clair pour votre modèle racine (par exemple Root).
    • Choisissez un préréglage de bibliothèque JSON (comme json-c) si vous souhaitez des aides à l'analyse.
    • Vérifiez comment les tableaux et les objets imbriqués sont représentés (souvent des pointeurs nécessitant une manipulation manuelle).
  3. Étape 3 – Vérifiez le code généré

    • Vérifiez les noms de champs, les types et la façon dont les tableaux/objets sont modélisés.
    • Ajustez les options telles que Root Type Name, la gestion des valeurs nulles et les frameworks si disponibles.
    • Si un champ est déduit de manière incorrecte, modifiez votre exemple JSON et régénérez-le.
  4. Étape 4 – Intégrez les structures dans votre projet C

    • Ajoutez les fichiers .h/.c générés à votre build et incluez l'en-tête si nécessaire.
    • Connectez l'analyse (si généré) ou mappez manuellement les valeurs JSON dans vos structures.
    • Faites attention à l'allocation et au nettoyage des chaînes, des tableaux et des structures imbriquées.
  5. Étape 5 – Copier ou télécharger

    • Copiez la sortie dans votre projet ou téléchargez-la sous forme de fichier.
    • Exécutez votre formateur/linter pour qu'il corresponde à votre style de code.
    • Ajoutez des bibliothèques d'analyse/sérialisation JSON si votre langage l'exige.

Conseils rapides

  • Préférez les tampons de taille fixe uniquement lorsque vous contrôlez la taille d’entrée ; sinon, utilisez l'allocation dynamique.
  • Gardez les règles de propriété explicites (qui attribuent et qui libèrent).
  • Validez JSON avant l'analyse pour éviter les allocations partielles sur des entrées non valides.
Exemple de résultat (simplifié)
// Entrée JSON
{
  "id": 123,
  "name": "Maeve Winters",
  "email": "[email protected]",
  "active": true,
  "roles": ["admin", "editor"],
  "metadata": { "plan": "pro" },
  "createdAt": "2024-03-01T10:15:00Z",
  "score": 99.5,
  "notes": null
}

// Generated C structs (simplified)
typedef struct Metadata {
  char* plan;
} Metadata;

typedef struct Root {
  int id;
  char* name;
  char* email; // nullable in JSON
  int active;
  char** roles;
  int roles_count;
  Metadata metadata;
  char* createdAt;
  double score;
  void* notes;
} Root;

Outils JSON et C associés

Explorez d'autres outils JSON et de schéma qui fonctionnent parfaitement avec ce générateur JSON vers C.

Questions fréquentes

Quelles fonctionnalités C sont prises en charge ?

Le générateur crée des définitions de struct C standard avec des fonctions de gestion mémoire (create et free), prend en charge un mappage de types de base et suit les conventions de nommage C.

Comment la gestion mémoire est‑elle gérée ?

Le code généré inclut des fonctions create_ et free_ pour une allocation/libération sûres. Les champs chaîne nécessitent une allocation mémoire manuelle.

Est‑ce compatible avec la bibliothèque JSON‑C ?

Sélectionnez le framework « JSON‑C » pour générer du code compatible avec la bibliothèque json-c, incluant les références d’en‑têtes appropriées.

Comment les types complexes sont‑ils gérés ?

Les tableaux sont mappés sur des pointeurs void**, les objets imbriqués sur des pointeurs void*. Le casting et la gestion mémoire dépendent de vos besoins réels.

Générateur JSON vers C | JSONSwiss