DT Dev Tools

Convertir JSON en C++ — Générateur de structs

Convertissez du JSON en structs ou classes C++ en ligne avec from_json et to_json de nlohmann/json, champs std::optional et namespaces. Gratuit et privé.

🔒 S'exécute entièrement dans votre navigateur — rien n'est envoyé

Publicité

Générer des types C++ à partir de JSON

C++ n'a pas de réflexion intégrée : associer du JSON à vos propres types revient donc généralement à écrire une struct, puis une paire de fonctions de sérialisation pour chaque objet de la charge utile. Ce convertisseur JSON vers C++ génère les deux à partir d'un exemple. Chaque objet JSON devient une struct (ou une classe avec getters et setters), les clés deviennent des membres en snake_case, les objets imbriqués deviennent leurs propres types, les tableaux deviennent std::vector<T>, les entiers deviennent int64_t, les nombres fractionnaires deviennent double, et les champs absents ou nuls dans une partie de l'exemple deviennent std::optional<T>. Le tout est placé dans le namespace de votre choix et émis sous la forme d'un seul header protégé par #pragma once.

L'inférence de types est assurée par quicktype, qui fusionne tous les éléments de chaque tableau avant de choisir un type. Un champ présent dans seulement certains éléments est tout de même capturé comme optionnel, si bien que l'analyse de la réponse complète ne lève pas d'erreur sur une clé manquante.

Intégration avec nlohmann/json

Le header généré est conçu pour nlohmann/json, la bibliothèque JSON la plus populaire pour le C++ moderne. Pour chaque type, il définit des surcharges from_json et to_json qui associent les membres aux clés JSON d'origine, ainsi que de petits utilitaires pour les valeurs optionnelles. Une fois json.hpp disponible, lire un document tient en un seul appel à nlohmann::json::parse(text).get<Root>(), et le réécrire se fait avec nlohmann::json j = value;. Cochez Types only si vous n'avez besoin que des déclarations — par exemple pour un autre sérialiseur — et Use Boost si votre chaîne d'outils ne peut pas utiliser C++17.

Conseils pour le code de production

Collez un exemple complet avec plusieurs éléments de tableau et des champs optionnels renseignés afin que les types soient précis. Les tableaux vides et les valeurs nulles retombent sur nlohmann::json, que vous voudrez généralement remplacer. Renommez le type racine pour qu'il corresponde à votre domaine, choisissez un namespace adapté à votre projet et passez clang-format sur le résultat. Vérifiez la largeur des entiers, envisagez enum class pour les chaînes à ensemble de valeurs fixe, et notez que les chaînes de date-heure restent des std::string afin que vous puissiez les analyser avec la bibliothèque de votre choix. Tout le traitement s'effectue localement : vos données internes restent sur votre machine.

Comment utiliser

  1. Collez le JSONCollez un document JSON ou cliquez sur Load sample.
  2. ConfigurezDéfinissez le nom du type racine, le namespace, le style struct ou classe et la prise en charge des optionnels.
  3. Ajoutez le headerCopiez le code ou téléchargez un fichier .hpp et incluez-le à côté de json.hpp.

Questions fréquemment posées

Quelle bibliothèque JSON le code généré utilise-t-il ?
Il cible nlohmann/json. Le header inclut des surcharges from_json et to_json, donc nlohmann::json::parse(text).get<Root>() fonctionne directement.
Quel standard C++ est requis ?
C++17 par défaut, car les champs optionnels utilisent std::optional. Cochez Use Boost pour utiliser boost::optional à la place si vous êtes limité à un standard plus ancien.
Puis-je obtenir des classes avec getters et setters ?
Oui. Réglez Types sur des classes avec getters/setters pour obtenir des membres encapsulés, ou conservez de simples structs pour les conteneurs de données.
Mon JSON est-il envoyé quelque part ?
Non. Le header est généré entièrement dans votre navigateur ; rien n'est envoyé à un serveur.
Publicité