Converter JSON para C++ — Gerador de structs
Converta JSON em structs ou classes C++ online com from_json e to_json do nlohmann/json, campos std::optional e namespaces. Grátis, instantâneo e privado.
🔒 Executa completamente no seu navegador — nada é enviadoGere tipos C++ a partir de JSON
O C++ não tem reflexão embutida, então mapear JSON para os seus próprios tipos normalmente significa escrever uma struct e depois um par de funções de serialização para cada objeto do payload. Este conversor de JSON para C++ gera ambas a partir de um exemplo. Cada objeto JSON vira uma struct (ou uma classe com getters e setters), as chaves viram membros em snake_case, objetos aninhados viram tipos próprios, arrays viram std::vector<T>, inteiros viram int64_t, números fracionários viram double e campos ausentes ou nulos em parte do exemplo viram std::optional<T>. Tudo é envolvido no namespace que você escolher e emitido como um único header protegido por #pragma once.
A inferência de tipos é feita pelo quicktype, que mescla todos os elementos de cada array antes de escolher um tipo. Um campo que aparece apenas em alguns itens ainda é capturado como opcional, de modo que analisar a resposta completa não gera erro por causa de uma chave ausente.
Integração com nlohmann/json
O header gerado foi projetado para o nlohmann/json, a biblioteca JSON mais popular do C++ moderno. Para cada tipo, ele define sobrecargas de from_json e to_json que mapeiam os membros de volta para as chaves JSON originais, além de pequenos auxiliares para valores opcionais. Com o json.hpp disponível, ler um documento é uma única chamada a nlohmann::json::parse(text).get<Root>(), e escrevê-lo de volta é nlohmann::json j = value;. Marque Types only se precisar apenas das declarações — por exemplo, para usar com outro serializador — e Use Boost se a sua toolchain não puder usar C++17.
Dicas para código de produção
Cole um exemplo completo, com vários itens nos arrays e os campos opcionais preenchidos, para que os tipos fiquem precisos. Arrays vazios e nulos recorrem a nlohmann::json, que normalmente você vai querer substituir. Renomeie o tipo raiz para combinar com o seu domínio, defina um namespace adequado ao seu projeto e execute o clang-format no resultado. Revise a largura dos inteiros, considere enum class para strings com um conjunto fixo de valores e lembre-se de que strings de data e hora continuam sendo std::string, para que você possa analisá-las com a biblioteca de sua preferência. Todo o processamento acontece localmente, então os payloads internos ficam na sua máquina.
Como usar
- Cole o JSONCole um documento JSON ou clique em Load sample.
- ConfigureDefina o nome do tipo raiz, o namespace, o estilo struct ou classe e o suporte a opcionais.
- Adicione o headerCopie o código ou baixe um arquivo .hpp e inclua-o junto com o json.hpp.
Perguntas frequentes
Qual biblioteca JSON o código gerado usa?
from_json e to_json, então nlohmann::json::parse(text).get<Root>() funciona de imediato.Qual padrão C++ é necessário?
std::optional. Marque Use Boost para usar boost::optional no lugar, caso esteja preso a um padrão mais antigo.