Convertir JSON a C++ — Generador de structs
Convierte JSON a structs o clases C++ online con from_json y to_json de nlohmann/json, campos std::optional y namespaces. Gratis, instantáneo y privado.
🔒 Se ejecuta completamente en tu navegador — nada se subeGenera tipos C++ a partir de JSON
C++ no tiene reflexión integrada, así que asignar JSON a tus propios tipos suele implicar escribir una struct y después un par de funciones de serialización para cada objeto del payload. Este conversor de JSON a C++ genera ambas a partir de un ejemplo. Cada objeto JSON se convierte en una struct (o en una clase con getters y setters), las claves pasan a ser miembros en snake_case, los objetos anidados se convierten en sus propios tipos, los arrays pasan a ser std::vector<T>, los enteros se convierten en int64_t, los números con parte fraccionaria en double, y los campos ausentes o nulos en parte del ejemplo pasan a ser std::optional<T>. Todo se envuelve en el namespace que elijas y se emite como un único header protegido con #pragma once.
La inferencia de tipos la realiza quicktype, que fusiona todos los elementos de cada array antes de elegir un tipo. Un campo que aparece solo en algunos elementos se captura igualmente como opcional, por lo que analizar la respuesta completa no lanza errores por una clave ausente.
Integración con nlohmann/json
El header generado está pensado para nlohmann/json, la biblioteca JSON más popular del C++ moderno. Para cada tipo define sobrecargas de from_json y to_json que asignan los miembros a las claves JSON originales, además de pequeños helpers para valores opcionales. Una vez disponible json.hpp, leer un documento es una sola llamada a nlohmann::json::parse(text).get<Root>() y volver a escribirlo es nlohmann::json j = value;. Marca Types only si solo necesitas las declaraciones —por ejemplo, para usarlas con otro serializador— y Use Boost si tu toolchain no puede usar C++17.
Consejos para código de producción
Pega un ejemplo completo con varios elementos en los arrays y los campos opcionales rellenos para que los tipos sean precisos. Los arrays vacíos y los nulos recurren a nlohmann::json, que normalmente querrás sustituir. Cambia el nombre del tipo raíz para que encaje con tu dominio, define un namespace adecuado para tu proyecto y ejecuta clang-format sobre el resultado. Revisa el ancho de los enteros, considera enum class para cadenas con un conjunto fijo de valores y ten en cuenta que las cadenas de fecha y hora siguen siendo std::string, para que puedas analizarlas con la biblioteca que prefieras. Todo el procesamiento ocurre en local, de modo que los payloads internos permanecen en tu equipo.
Cómo usar
- Pega el JSONPega un documento JSON o haz clic en Load sample.
- ConfiguraDefine el nombre del tipo raíz, el namespace, el estilo struct o clase y la compatibilidad con opcionales.
- Añade el headerCopia el código o descarga un archivo .hpp e inclúyelo junto a json.hpp.
Preguntas frecuentes
¿Qué biblioteca JSON usa el código generado?
from_json y to_json, así que nlohmann::json::parse(text).get<Root>() funciona directamente.¿Qué estándar de C++ se necesita?
std::optional. Marca Use Boost para usar boost::optional en su lugar si estás limitado a un estándar anterior.