Conversor de C a JSON
Pega structs o initializers de C. Recupera JSON limpio.
Qué hace esta herramienta
Si alguna vez has necesitado un payload JSON que espeje un struct de C — para un test de un servicio compilado con gcc, una config de un dispositivo embebido o un trozo de documentación — ya sabes cómo suele ir la cosa: tirar de cJSON, escribir el pegamento campo por campo, recompilar, depurar. Pega aquí el C y te devuelve JSON válido sin tocar un Makefile. Acepta un initializer designado suelto, un header con varios structs o algo con tipos anidados y arrays — mismo resultado: un documento JSON limpio con cada campo preservado.
El conversor entiende cómo se serializan de verdad los valores de C. int, long, size_t, float y double salen como números JSON. Los arrays de char y los literales string se convierten en strings JSON. bool de stdbool.h pasa a true/false. Los arrays fijos (int items[3]) se convierten en arrays JSON con la longitud correcta. Los structs anidados — un Address dentro de un Order, por ejemplo — se expanden en objetos JSON anidados. El comportamiento sigue la referencia del lenguaje C.
Los initializers designados de C99 (.field = value) están totalmente soportados, que es la forma habitual de ver literales de struct en código real hoy en día. Los alias typedef se resuelven, y los valores enum salen como su valor numérico o como el nombre del símbolo según el contexto. Los tipos union serializan el miembro activo. Los punteros a NULL se convierten en null JSON; si no, el valor apuntado se expande. Pega varios structs a la vez y cada uno se convierte en una clave top-level del resultado.
Cómo usarla
Tres pasos. Funciona igual para un initializer de dos líneas que para un header entero con veinte typedefs.
Pega tu C (o carga el ejemplo)
Mete tu C tal cual en el editor de la izquierda. Una definición de struct, un typedef, un initializer designado, varios structs o arrays anidados — todo vale. Dale a Load Sample si quieres ver primero un ejemplo real.
No hace falta quitar las directivas #include ni los atributos específicos del compilador. Deja la sintaxis ISO C intacta — el parser se encarga. Vale tanto C89 como moderno (C11/C17/C23).
Dale a Convert
Pulsa el botón verde Convert. La herramienta lee el C, recorre cada struct, expande los initializers y escupe el JSON en una pasada. Verás un indicador de carga mientras corre.
Copia el JSON
El panel derecho se rellena con JSON indentado. Cópialo a tu cliente HTTP, a la config del firmware embebido, a un fixture de test o al README. Ese es todo el ciclo — sin paso de build.
Cuándo te viene bien de verdad
Config embebida y firmware
Tienes un struct de config del dispositivo en C y necesitas una versión JSON para un endpoint REST o una herramienta de aprovisionamiento. Pega el struct, coge el JSON, envíalo.
Payloads de peticiones API
Un servicio en C envolviendo una API de terceros. Pega el struct de la request y tienes el JSON para probarlo con curl antes de cablear cJSON en producción.
Fixtures para tests unitarios
Convierte los initializers designados de tus tests unitarios en ficheros JSON semilla para tests de integración o comparaciones contra golden files.
Docs que casan con el código
Genera ejemplos JSON para un README o un doc de protocolo directamente desde tus structs reales, así la documentación se mantiene en sync con el fichero de cabecera.
Preguntas habituales
¿Hace falta tener cJSON o Jansson instalados?
No. Esta herramienta corre en servidor y no compila tu código — recibes el JSON sin tirar de una librería de serialización. Si quieres una opción en runtime, cJSON es la elección típica; Jansson es otra buena opción.
¿Entiende los initializers designados y los typedefs?
Sí. Los initializers designados de C99 (.field = value) están totalmente soportados, y los alias typedef se resuelven al struct subyacente. Los initializers designados anidados se expanden igual que los colocaría el compilador.
¿Y con arrays, punteros y NULL?
Los arrays de tamaño fijo se convierten en arrays JSON con el número correcto de elementos. Los punteros que son NULL salen como null JSON; si no, el valor apuntado se expande. Los arrays de structs funcionan igual — cada elemento es un objeto JSON anidado.
¿Cómo se manejan enums y unions?
Los valores enum salen como el nombre del símbolo o como el valor numérico según el contexto. Los tipos union serializan el miembro activo actualmente. Los bitfields (unsigned flags : 4) se convierten en números.
¿Se guarda mi código?
Tu código se envía al backend para la conversión y no se persiste — no registramos el payload. Si el código es realmente sensible (firmware embebido con secretos, detalles de protocolo interno), dale un repaso antes de pegarlo.
¿Qué pasa si el C tiene macros o extensiones del compilador?
Las macros que expanden a un valor funcionan; las macros tipo función que hacen lógica de verdad se tratan como opacas y se emiten como null en vez de reventar. Los atributos de GCC y MSVC (__attribute__, __declspec) se toleran y se ignoran.
Otras herramientas que te pueden venir bien
C a JSON es una pieza del puzzle. Estas casan bien con ella: