Saltar al contenido

JSON a esquema Protobuf

Convierte un ejemplo JSON en una definición de mensaje Protocol Buffers .proto.

Entrada
Salida

JSON a esquema Protobuf

Pega un ejemplo JSON y esta herramienta deduce la estructura de tus datos y los escribe como una definición de mensaje Protocol Buffers, lista para insertar en un archivo .proto. Está diseñada para el caso habitual de convertir una respuesta de API, un objeto de configuración o un registro de eventos en un esquema inicial, sin tener que escribir números de campo y tipos manualmente.

Elige sintaxis proto3 o proto2, nombra el mensaje raíz y añade una declaración de paquete si tu proyecto lo usa. Los números de campo comienzan en 1 por defecto e incrementan de 1 en 1 por campo, ambos configurables para un esquema de numeración reservado. Los arrays se convierten en campos repeated, y un objeto cuyos valores son todos del mismo tipo —una búsqueda indexada por ID o código de idioma— se convierte en map<string, T> en lugar de un mensaje fijo, evitando que un campo de diccionario se convierta en docenas de campos nombrados. Activa la palabra clave optional para marcar campos que faltan o son null en parte de tu ejemplo, y alterna mensajes anidados para mantener tipos secundarios dentro de su padre en lugar de como hermanos de nivel superior. Las cadenas con formato ISO 8601 se asignan a google.protobuf.Timestamp, y cada campo puede llevar un comentario con su clave JSON original.

Los objetos profundamente anidados, arrays de objetos, arrays de arrays y campos de tipo mixto se manejan todos: un valor genuinamente mixto regresa a google.protobuf.Value con la importación correspondiente añadida automáticamente. El JSON malformado se reporta con la línea y columna donde falló el análisis, no con un error genérico.

Todo se ejecuta localmente en tu navegador — tu JSON nunca se carga en ningún lado. Copia el esquema generado, descárgalo como archivo .txt para renombrarlo como .proto, o envía el resultado a otra herramienta para seguir trabajando.

Preguntas frecuentes

¿Produce una sintaxis .proto real y compilable?
Sí — el resultado es sintaxis de mensaje protobuf plana (proto2 o proto3) que puedes pegar directamente en un archivo .proto. El mantenimiento a largo plazo, como mantener los números de campo estables entre cambios de esquema, sigue siendo tu responsabilidad.
¿Cómo decide entre un map y un mensaje para un campo de objeto?
Cuando cada valor dentro de un objeto es del mismo tipo escalar, se representa como map<string, T> — la forma que tiene un diccionario real. Tan pronto como un objeto mezcla tipos de valor en sus claves, se convierte en un campo de mensaje nombrado campo a campo en su lugar.
¿Qué sucede con un campo que tiene diferentes tipos en una muestra?
Regresa a google.protobuf.Value, con la importación correspondiente añadida automáticamente al inicio del esquema. Refina el tipo de campo manualmente una vez que hayas decidido cuál es el tipo autoritativo.
¿Puedo numerar campos comenzando en otro lugar que no sea 1?
Sí — establece el número inicial y el incremento en las opciones. La numeración comienza de nuevo en tu valor inicial elegido dentro de cada mensaje anidado, coincidiendo con cómo protobuf alcanza los números de campo.
¿Mi JSON se carga en algún lugar?
No. La generación de esquemas se ejecuta completamente en tu navegador — tu JSON nunca sale de tu dispositivo.