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é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
- Collez le JSONCollez un document JSON ou cliquez sur Load sample.
- ConfigurezDéfinissez le nom du type racine, le namespace, le style struct ou classe et la prise en charge des optionnels.
- 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 ?
from_json et to_json, donc nlohmann::json::parse(text).get<Root>() fonctionne directement.Quel standard C++ est requis ?
std::optional. Cochez Use Boost pour utiliser boost::optional à la place si vous êtes limité à un standard plus ancien.