Convertisseur C++ vers JSON
Collez vos structs ou objets C++. Récupérez un JSON propre.
Ce que fait cet outil
Si tu as déjà eu besoin d'un payload JSON qui reflète un struct C++ — pour nourrir une API, une fixture ou un fichier de config — tu connais la rengaine : tirer nlohmann::json, écrire la glu to_json, puis recompiler. Colle ton C++ ici et récupère un JSON valide sans tout ça. Ça marche avec un seul initialiseur, un header entier bourré de structs, ou un truc plein de templates imbriqués — même résultat : un document JSON propre avec tous les champs intacts.
Le convertisseur comprend comment les valeurs C++ se sérialisent vraiment. std::string devient une string JSON, les littéraux numériques comme 49.99f ou 42u deviennent des nombres JSON sans le suffixe, bool devient true/false, et std::vector<T> / std::array<T,N> deviennent des tableaux JSON. Un std::optional<T> à std::nullopt tombe sur null ; avec une valeur, le type interne est sérialisé. std::map et std::unordered_map à clés string deviennent des objets JSON, conformément aux conventions de cppreference.
Les initialiseurs désignés de C++20 (.field = value) sont gérés, tout comme les listes d'initialisation agrégées. Colle plusieurs structs d'un coup et chacun ressort comme entrée de premier niveau dans le JSON, avec les types imbriqués dépliés. Si tu viens du monde Boost.JSON, la sortie correspond à ce que tu attendrais de boost::json::value_from — sans les acrobaties de templates.
Comment l'utiliser
Trois étapes. Que tu colles une seule liste d'initialisation ou un header entier avec une douzaine de structs.
Colle ton C++ (ou charge l'exemple)
Balance ton C++ dans l'éditeur de gauche tel quel. Une définition de struct, une classe, une liste d'initialisation, plusieurs types ou des structures imbriquées — tout passe. Clique sur Charger un exemple pour voir d'abord un cas réaliste.
Pas besoin de virer les directives #include, les namespaces ou les templates. Laisse la syntaxe C++ intacte — le parser gère. Pour la référence au standard, ISO C++ héberge les documents officiels.
Clique sur Convertir
Clique sur le bouton vert Convertir. L'outil lit le C++, préserve chaque struct et chaque champ, et sort le JSON en une passe. Un petit indicateur de chargement s'affiche pendant le traitement.
Copie le JSON
Le panneau de droite se remplit avec un JSON indenté. Copie-le dans ton appel REST, ta fixture de test, ton fichier de config à côté du CMakeLists, ou ta doc. Boucle bouclée.
Quand ça sert vraiment
Payloads de requêtes API
Tu as un struct de requête C++ et tu as besoin du JSON pour le balancer dans curl ou Postman. Colle le struct, récupère le JSON, tu passes à la suite.
Templates de fichiers de config
Un struct Settings avec 40 membres se transforme en template JSON prêt à éditer — plus de scaffolding écrit à la main, plus de clés oubliées.
Docs qui collent au code
Génère des exemples JSON pour un README ou une référence d'API directement depuis tes vrais structs, pour que la doc arrête de dériver.
Fixtures et seeds de tests
Transforme les listes d'initialisation de tes tests unitaires en fichiers JSON de seed pour les tests d'intégration, les serveurs mock ou les loaders de base de données.
Questions fréquentes
J'ai besoin d'avoir nlohmann::json ou Boost installés ?
Non. L'outil tourne côté serveur et n'exécute pas ton code — tu obtiens du JSON sans tirer de bibliothèque de sérialisation. Si tu veux une vraie bibliothèque en runtime, nlohmann/json et Boost.JSON sont tous les deux de très bons choix.
Il gère std::optional, std::variant et les smart pointers ?
Un std::optional<T> à std::nullopt devient null ; avec valeur, le type interne est sérialisé. std::unique_ptr et std::shared_ptr sont traités pareil — null si vide, la valeur pointée sinon. std::variant utilise l'alternative active sur le moment.
Et les conteneurs comme std::vector et std::map ?
std::vector, std::array, std::list, std::set et std::deque deviennent tous des tableaux JSON. std::map / std::unordered_map à clés string deviennent des objets JSON ; avec des clés non-string, les clés sont stringifiées selon la sémantique des conteneurs cppreference.
Je peux coller plusieurs structs d'un coup ?
Oui — colle un header entier ou un fichier .cpp. Chaque agrégat de premier niveau ressort comme sa propre clé dans le JSON, avec les types imbriqués dépliés. Les membres hérités des classes de base sont inclus aussi.
Mon code est stocké ?
Ton code est envoyé au backend pour conversion et n'est pas persisté — on ne loggue pas le payload. Comme toujours, si le code est vraiment sensible, jette-y un œil rapide avant de le coller.
Et si le code contient des templates, des macros ou des lambdas ?
Les templates avec types concrets marchent nickel. Les templates non instanciés, les macros et les lambdas sont émis en null plutôt que de faire planter toute la conversion, donc le reste de tes données passe quand même. Corrige d'abord les erreurs de syntaxe évidentes — le parser est tolérant, mais ce n'est pas un compilateur complet.
D'autres outils qui pourraient servir
C++ vers JSON, c'est une pièce du puzzle. Ceux-là vont bien avec :