Convertidor de C++ a JSON
Pega structs u objetos de C++. Recibe JSON limpio al instante.
Qué hace esta herramienta
Si alguna vez has tenido que montar un payload JSON que calque un struct de C++ — para alimentar una API, un fixture o un archivo de configuración — ya sabes la rutina: meter nlohmann::json, escribir el pegamento de to_json y recompilar. Pega el C++ aquí y obtén JSON válido sin pasar por eso. Funciona con un único inicializador, con una cabecera entera llena de structs, o con algo plagado de plantillas anidadas — el resultado es el mismo: un JSON limpio con todos los campos.
El convertidor entiende cómo se serializan de verdad los valores de C++. std::string pasa a string JSON, literales numéricos tipo 49.99f o 42u salen como números JSON sin el sufijo, bool se vuelve true/false, y std::vector<T> / std::array<T,N> acaban como arrays JSON. Un std::optional<T> con std::nullopt baja a null; con valor, se serializa el tipo interno. std::map y std::unordered_map con claves de tipo string pasan a objetos JSON, tal como marca cppreference.
Los inicializadores designados de C++20 (.field = value) están cubiertos, igual que las listas de inicialización agregadas. Pega varios structs a la vez y cada uno sale como entrada de nivel superior en el JSON, con los tipos anidados expandidos. Si vienes del mundo de Boost.JSON, la salida coincide con lo que esperarías de boost::json::value_from — pero sin las acrobacias de plantillas.
Cómo usarlo
Tres pasos. Da igual que pegues una única lista de inicialización o una cabecera entera con una docena de structs.
Pega tu C++ (o carga el ejemplo)
Suelta tu C++ en el editor de la izquierda tal cual. Una definición de struct, una clase, una lista de inicialización, varios tipos o estructuras anidadas — todo vale. Pulsa Cargar ejemplo si prefieres ver primero un caso realista.
No hace falta que quites los #include, los namespaces ni las plantillas. Deja la sintaxis de C++ intacta — el parser se encarga. Si quieres consultar el estándar, ISO C++ tiene los materiales oficiales.
Dale a Convertir
Pulsa el botón verde Convertir. La herramienta lee el C++, respeta cada struct y cada campo, y emite el JSON de una pasada. Mientras tanto ves un pequeño indicador de carga.
Copia el JSON
El panel derecho se rellena con JSON indentado. Cópialo a tu llamada REST, a un test fixture, a un archivo de config cerca del CMakeLists o a la documentación. Y listo.
Cuándo viene realmente bien
Payloads de peticiones a API
Tienes un struct de petición en C++ y necesitas el JSON para soltarlo en curl o en Postman. Pega el struct, te llevas el JSON, sigues.
Plantillas de archivos de configuración
Un struct Settings con 40 miembros se convierte en una plantilla JSON lista para editar — sin andamiaje escrito a mano ni claves olvidadas.
Docs que no se desfasan del código
Genera ejemplos JSON para un README o una referencia de API a partir de tus structs reales, para que la documentación deje de divergir de la realidad.
Fixtures y seeds para tests
Convierte las listas de inicialización de tus tests unitarios en archivos JSON para tests de integración, mocks de servidor o cargadores de base de datos.
Preguntas frecuentes
¿Necesito tener instalado nlohmann::json o Boost?
No. La herramienta corre en servidor y no ejecuta tu código — te llevas el JSON sin meter ninguna librería de serialización. Si lo que buscas es una librería en tiempo de ejecución, nlohmann/json y Boost.JSON son ambas opciones sólidas.
¿Maneja std::optional, std::variant y smart pointers?
Un std::optional<T> con std::nullopt sale como null; con valor, se serializa el tipo interno. std::unique_ptr y std::shared_ptr van igual — null si están vacíos, el valor apuntado en caso contrario. std::variant usa la alternativa activa en ese momento.
¿Y contenedores como std::vector y std::map?
std::vector, std::array, std::list, std::set y std::deque se convierten todos en arrays JSON. std::map / std::unordered_map con claves string pasan a objetos JSON; si las claves no son string, se estringifican según la semántica de contenedores de cppreference.
¿Puedo pegar varios structs de golpe?
Sí — pega una cabecera entera o un .cpp. Cada agregado de nivel superior sale como su propia clave en el JSON, con los tipos anidados expandidos. Los miembros heredados de clases base también se incluyen.
¿Se guarda mi código?
Tu código se envía al backend para convertirlo y no se persiste — no logueamos el payload. Como siempre, si el código es realmente sensible, échale un vistazo antes de pegarlo.
¿Y si el código tiene plantillas, macros o lambdas?
Las plantillas con tipos concretos funcionan sin problema. Las plantillas sin instanciar, las macros y las lambdas se emiten como null en vez de hacer fallar toda la conversión, así que el resto de tus datos sigue pasando. Arregla primero los errores de sintaxis obvios — el parser es tolerante, pero no es un compilador completo.
Otras herramientas que quizá necesites
C++ a JSON es una pieza del puzzle. Estas encajan bien al lado: