Cole o C++ à esquerda e clique em "Converter" — transformamos em JSONCole código C++

O que esta ferramenta faz

Se você já precisou de um payload JSON que espelhasse um struct C++ — para alimentar uma API, uma fixture ou um arquivo de config — já conhece o roteiro: puxar o nlohmann::json, escrever a cola de to_json e recompilar. Cole o C++ aqui e receba JSON válido sem passar por nada disso. Funciona para um único inicializador, para um header inteiro com vários structs ou para algo recheado de templates aninhados — o resultado é o mesmo: um documento JSON limpo com todos os campos preservados.

O conversor entende como os valores de C++ realmente serializam. std::string vira string JSON, literais numéricos como 49.99f ou 42u viram números JSON sem o sufixo, bool vira true/false, e std::vector<T> / std::array<T,N> viram arrays JSON. Um std::optional<T> com std::nullopt cai para null; com valor, serializa o tipo interno. std::map e std::unordered_map com chaves string viram objetos JSON, conforme as convenções do cppreference.

Inicializadores designados do C++20 (.field = value) são tratados, assim como listas de inicialização agregadas. Cole vários structs de uma vez e cada um sai como entrada de topo no JSON, com os tipos aninhados expandidos. Se você vem do mundo Boost.JSON, a saída combina com o que boost::json::value_from produziria — só que sem a acrobacia de templates.

Como usar

Três passos. Tanto faz se você colar uma lista de inicialização sozinha ou um header inteiro com uma dúzia de structs.

1

Cole seu C++ (ou carregue o exemplo)

Jogue o C++ no editor da esquerda do jeito que está. Uma definição de struct, uma classe, uma lista de inicialização, vários tipos ou estruturas aninhadas — tudo serve. Clique em Carregar exemplo se quiser ver primeiro um caso realista.

Você não precisa tirar os #include, namespaces ou templates. Deixe a sintaxe de C++ intacta — o parser cuida disso. Para consultar o padrão, o ISO C++ mantém o material oficial.

2

Clique em Converter

Clique no botão verde Converter. A ferramenta lê o C++, preserva cada struct e campo, e emite o JSON de uma passada. Um pequeno indicador de carregamento aparece enquanto roda.

3

Copie o JSON

O painel da direita enche com JSON indentado. Copie para a sua chamada REST, fixture de teste, arquivo de config perto do CMakeLists ou documentação. É o ciclo completo.

Quando isso realmente ajuda

Payloads de requisição de API

Você tem um struct de request em C++ e precisa do JSON para jogar no curl ou no Postman. Cole o struct, pegue o JSON, siga em frente.

Templates de arquivos de config

Um struct Settings com 40 membros vira um template JSON pronto para editar — sem andaime escrito à mão, sem chave esquecida.

Docs que combinam com o código

Gere exemplos de JSON para README ou referência de API direto dos seus structs reais, para a documentação parar de descolar da realidade.

Fixtures e seeds de teste

Transforme as listas de inicialização dos seus testes unitários em arquivos JSON de seed para testes de integração, servidores mock ou carregadores de banco.

Perguntas frequentes

Preciso ter nlohmann::json ou Boost instalados?

Não. A ferramenta roda no servidor e não executa seu código — você recebe JSON sem puxar nenhuma biblioteca de serialização. Se quiser mesmo uma biblioteca em runtime, nlohmann/json e Boost.JSON são duas boas opções.

Ela lida com std::optional, std::variant e smart pointers?

Um std::optional<T> com std::nullopt vira null; com valor, o tipo interno é serializado. std::unique_ptr e std::shared_ptr são tratados igual — null se vazios, o valor apontado caso contrário. std::variant usa a alternativa ativa no momento.

E containers tipo std::vector e std::map?

std::vector, std::array, std::list, std::set e std::deque viram todos arrays JSON. std::map / std::unordered_map com chaves string viram objetos JSON; com chaves não-string, as chaves são convertidas em string segundo a semântica de containers do cppreference.

Posso colar vários structs de uma vez?

Sim — cole um header inteiro ou um arquivo .cpp. Cada agregado de topo sai como chave própria no JSON, com os tipos aninhados expandidos. Membros herdados de classes base também entram.

Meu código fica armazenado?

Seu código vai para o backend para conversão e não é persistido — não logamos o payload. Como sempre, se o código for realmente sensível, dê uma olhada antes de colar.

E se o código tiver templates, macros ou lambdas?

Templates com tipos concretos funcionam normalmente. Templates não instanciados, macros e lambdas saem como null em vez de derrubar a conversão inteira, então o resto dos seus dados continua passando. Corrija os erros de sintaxe óbvios antes — o parser é tolerante, mas não é um compilador completo.

Outras ferramentas que podem te servir

C++ para JSON é uma peça do quebra-cabeça. Essas combinam bem: