Protobuf a JSON Schema
Convierte definiciones proto3 a JSON Schema, interfaces TypeScript y JSON de ejemplo. Admite messages, enums, tipos anidados, oneof, map y repeated.
Actualizado
Protobuf to JSON Schema
Convert Protocol Buffer (proto3) definitions to JSON Schema, TypeScript interfaces, and sample JSON. Paste your .proto file and get instant, accurate conversions.
Protobuf Input
Preguntas Frecuentes
¿Qué es el conversor de Protobuf a JSON Schema?
El conversor de Protobuf a JSON Schema es una herramienta online gratuita que convierte definiciones proto3 en JSON Schema, interfaces TypeScript y JSON de ejemplo. Admite mensajes, enums, tipos anidados, oneof, map y repeated. Funciona por completo en tu navegador, sin instalación ni registro.
¿Qué funciones ofrece?
Proto3: mensajes, enums, mensajes anidados, repeated, optional, oneof, campos map y todos los tipos escalares.
¿Qué formatos de salida genera?
Tres: JSON Schema (Draft-07 con $ref), interfaces TypeScript y JSON de ejemplo con valores de marcador de posición.
¿Cómo se tratan los tipos int64?
Se asignan a string tanto en JSON Schema como en TypeScript, siguiendo la convención estándar de mapeo JSON de protobuf para enteros de 64 bits.
¿El conversor de Protobuf a JSON Schema es gratuito?
Sí, el conversor de Protobuf a JSON Schema es 100 % gratuito, sin registro, sin tarifas ocultas y sin límites de uso. Todo el procesamiento se realiza localmente en tu navegador, garantizando una privacidad total.
¿Están seguros mis datos con esta herramienta?
Por supuesto. El conversor de Protobuf a JSON Schema procesa todo en el lado del cliente, dentro de tu navegador. No se sube ni se almacena ningún dato en ningún servidor. Tu contenido permanece siempre privado en tu dispositivo.
¿Funciona el conversor de Protobuf a JSON Schema en dispositivos móviles?
Sí, el conversor de Protobuf a JSON Schema es totalmente adaptable y funciona en smartphones y tabletas. Puedes usarlo en cualquier dispositivo con un navegador web moderno, sin necesidad de descargar ninguna app.
¿Necesito crear una cuenta para usar esta herramienta?
No se necesita cuenta ni registro. Simplemente abre el conversor de Protobuf a JSON Schema en tu navegador y empieza a usarlo de inmediato. No hay muros de registro ni restricciones de uso.
¿Qué lenguajes de programación o formatos admite?
El conversor de Protobuf a JSON Schema admite una amplia variedad de formatos y lenguajes populares. Consulta la interfaz de la herramienta para ver la lista completa de opciones compatibles.
¿Cómo se usa el conversor de Protobuf a JSON Schema?
Solo tienes que introducir tu entrada en el campo correspondiente, ajustar las opciones a tu gusto y la herramienta la procesará al instante. Luego puedes copiar el resultado al portapapeles o descargarlo.
¿Cuál es la diferencia entre un archivo .proto y un JSON Schema?
Un archivo .proto es la definición fuente de Protocol Buffers: declara mensajes, campos, tipos y números de campo usados para serializar datos binarios compactos para gRPC y APIs de alto rendimiento. Un JSON Schema describe la forma de un documento JSON para que los validadores puedan comprobar que los payloads entrantes o salientes tienen los campos y tipos correctos. Ambos sirven a la misma idea -- un contrato de datos -- pero en mundos distintos: protobuf gobierna el formato binario de transmisión, mientras que JSON Schema gobierna el JSON legible por humanos usado en APIs web, configuraciones y documentación. Convertir uno en el otro te permite validar JSON contra la misma estructura que tus servicios ya aplican en binario. Esta herramienta lee una definición proto3 y genera un JSON Schema Draft-07, usando punteros $ref hacia un bloque definitions compartido, para que puedas insertarlo directamente en un validador sin reescribir los nombres de campo a mano.
¿Por qué los valores int64 aparecen como strings en lugar de números en la salida JSON?
Los tipos enteros de sesenta y cuatro bits -- int64, uint64, sint64, fixed64 y sfixed64 -- se representan como strings en lugar de números tanto en el JSON Schema como en el JSON de ejemplo. Esto no es una peculiaridad del conversor, sino que sigue el mapeo oficial de Protobuf a JSON. El tipo number de JavaScript es un flotante de doble precisión que solo puede representar de forma segura enteros hasta 2^53, así que un valor real de 64 bits podría perder precisión silenciosamente si se interpreta como número. Codificarlo como string preserva cada dígito y viaja sin problemas entre lenguajes. Los enteros de treinta y dos bits como int32 y uint32 se mantienen como números normales, ya que caben sin problema. Conocer esto evita sorpresas de validación cuando un backend envía un ID grande o una marca de tiempo. Pega tu esquema aquí y la herramienta aplica automáticamente la regla string-versus-número para cada campo numérico.
¿Cómo se convierten los campos repeated, map y oneof a JSON Schema y TypeScript?
Cada construcción de protobuf se mapea a su equivalente natural en JSON. Un campo repeated se convierte en un array JSON y en un tipo array de TypeScript, ya que contiene cero o más valores. Un campo map<key, value> se representa como un objeto JSON usando additionalProperties para tipar los valores, porque los maps de protobuf son colecciones clave-valor. Un bloque oneof emite todos sus campos miembro, y el JSON Schema registra que las opciones son mutuamente excluyentes, de modo que solo una puede estar establecida a la vez. Los campos optional pasan a no ser obligatorios en el schema y obtienen un ? en la interfaz de TypeScript, mientras que los tipos escalares y los mensajes anidados se resuelven mediante punteros $ref. Esto significa que esquemas complejos del mundo real se traducen fielmente en lugar de aplanarse o descartarse. Haz clic en Sample .proto para cargar un ejemplo que incluye un campo repeated, un map y un oneof, y luego compara las pestañas para ver exactamente cómo se maneja cada uno.
¿Qué valores de ejemplo usa el conversor en el JSON de muestra generado?
La pestaña de JSON de ejemplo construye un objeto completo rellenando cada campo con un valor representativo para que puedas ver de inmediato la forma del mensaje. Un string se convierte en "example", un double se convierte en 3.14, los campos enteros reciben números de muestra, y un campo bytes muestra un string corto codificado en base64 como "dGVzdA==", porque los bytes se tipan como strings base64 en JSON. Los campos repeated aparecen como arrays, los maps como objetos, y los mensajes anidados se expanden en línea. Estos no son datos reales -- son valores de relleno tipados pensados para poblar un fixture, el cuerpo de una petición de Postman o la respuesta de una API simulada sin tener que escribir un payload realista a mano. Como los valores coinciden con el tipo de cada campo, el ejemplo pasará la validación contra el JSON Schema que la herramienta genera a partir del mismo proto. Pega tu esquema y abre la pestaña de JSON de ejemplo para copiar o descargar un ejemplo listo para editar.
¿Puedo generar interfaces de TypeScript directamente desde un archivo proto3?
Sí. Junto con el JSON Schema, el conversor produce código TypeScript listo para usar: una interface por cada mensaje y un enum real por cada enumeración de protobuf, de modo que el resultado se inserta directamente en un proyecto y ofrece tipado en tiempo de compilación. Los tipos de campo siguen el mapeo de Protobuf a JSON -- strings, números, booleanos, arrays para los campos repeated y marcadores ? en los campos optional. Los enteros de sesenta y cuatro bits se tipan como string para evitar pérdida de precisión, y los campos bytes se tipan como strings base64. Los comentarios en línea de tu .proto se trasladan como descripciones, manteniendo documentados los tipos generados. Esto mantiene el frontend sincronizado con la fuente de verdad del backend sin copiar nombres de campo a mano cada vez que el esquema cambia, que es donde suelen aparecer los errores tipográficos y el desajuste. Pega tu definición proto3, cambia a la pestaña de TypeScript y luego copia el resultado o descárgalo como types.ts.
Herramientas Relacionadas
Probador de API Online Gratis
Prueba APIs REST con solicitudes GET, POST, PUT y DELETE. Gratis, rápido y funciona por completo en tu navegador sin necesidad de registro.
Conversor de cURL a Código Gratis
Convierte comandos cURL en código JavaScript, Python o PHP. Gratis, rápido y funciona por completo en tu navegador sin necesidad de registro.
Generador de JSON Schema Gratis
Genera JSON Schema a partir de tus datos JSON automáticamente. Gratis, rápido y funciona por completo en tu navegador sin necesidad de registro.
Analizador de Cabeceras HTTP Gratis
Analiza e inspecciona las cabeceras HTTP de solicitudes y respuestas. Gratis, rápido y funciona por completo en tu navegador sin necesidad de registro.
Acerca del conversor de Protobuf a JSON Schema
El conversor de Protobuf a JSON Schema transforma una definición proto3 .proto en tres resultados a la vez: un JSON Schema, un conjunto de interfaces de TypeScript y un documento JSON de ejemplo relleno con valores de muestra. Pega tu esquema en el cuadro de entrada y la herramienta lo analiza al instante, mostrando un recuento rápido de cuántos mensajes, enumeraciones (enum) y campos encontró antes de mostrar cada resultado en su propia pestaña.
Está pensada para desarrolladores backend y full-stack que trabajan con Protocol Buffers y gRPC pero necesitan cruzar hacia el mundo JSON: validar payloads de API, generar tipos para el cliente o compartir un contrato con un equipo que no usa protoc. Si solo quieres ver cómo luce un mensaje en formato JSON sin instalar el toolchain de protobuf en tu máquina, esta herramienta lo resuelve directamente en el navegador. No hay que registrarse, no hay nada que instalar y tu texto .proto nunca sale de tu dispositivo: el análisis y la generación de código se ejecutan por completo en el lado del cliente, en JavaScript.
Qué construcciones entiende el conversor
El analizador está orientado a proto3 y admite las construcciones que realmente aparecen en esquemas reales:
- Mensajes y campos, incluyendo el conjunto completo de tipos escalares (
string,bool,bytes, la familia de enteros,doubleyfloat). - Enumeraciones (
enum), tanto a nivel superior como anidadas dentro de un mensaje. - Mensajes anidados a cualquier profundidad, con los nombres aplanados en definiciones con puntos como
Order.Address. - Campos
repeated, mapeados a arrays. - Campos
optional, que pasan a no ser obligatorios en el schema y se marcan como opcionales (?) en TypeScript. - Campos
map<key, value>, representados como objetos conadditionalProperties. - Bloques
oneof, donde se emite cada miembro y el JSON Schema registra las opciones mutuamente excluyentes.
La declaración package y los comentarios en línea también se recogen: los comentarios se trasladan como campos description y anotaciones JSDoc.
Los tres resultados y cómo se mapean los tipos
Cada pestaña se puede copiar al portapapeles o descargar como archivo (schema.json, types.ts o sample.json):
- JSON Schema sigue el Draft-07. Los tipos de mensaje anidados o referenciados usan punteros
$refhacia un bloquedefinitionscompartido, y el$refraíz apunta a tu primer mensaje, de modo que el schema queda listo para insertarse en un validador. - Interfaces de TypeScript te dan un
interfacepor cada mensaje y unenumreal por cada enumeración, para que puedas pegar el resultado directamente en un proyecto y obtener tipado en tiempo de compilación. - JSON de ejemplo produce un objeto de muestra con valores representativos (por ejemplo, un
stringse convierte en"example", undoublese convierte en3.14), útil para poblar un fixture, una petición de Postman o un mock de API.
Un detalle que conviene conocer: los enteros de 64 bits (int64, uint64, sint64, fixed64, sfixed64) se representan como strings, no como números. Esto no es una peculiaridad de la herramienta, sino el mapeo oficial de Protobuf a JSON, porque un entero de 64 bits puede superar el rango que el tipo number de JavaScript puede representar de forma segura. Los enteros de 32 bits se mantienen como números, y los campos bytes se tipan como strings codificados en base64.
Por qué convertir protobuf a JSON
Protocol Buffers es compacto y rápido en la transmisión, pero JSON sigue siendo la lengua franca de las API web, los archivos de configuración y la documentación. Generar un JSON Schema a partir de tu .proto te permite validar el JSON entrante o saliente contra el mismo contrato que tus servicios ya aplican en formato binario. La salida de TypeScript mantiene el frontend sincronizado con la fuente de verdad del backend sin copiar nombres de campos a mano. Y un payload de ejemplo ya listo te ahorra la tediosa tarea de escribir un ejemplo realista manualmente.
Para empezar, haz clic en Sample .proto para cargar un ejemplo con mensajes, una enumeración, tipos anidados, un oneof y un map, y luego cambia entre pestañas para ver cómo se traduce cada construcción. Reemplázalo por tu propio esquema cuando estés listo.