Vai al contenuto
100% locale

Da JSON a schema Protobuf

Trasforma un campione JSON in una definizione di messaggio Protocol Buffers .proto.

Ingresso
Uscita

Da JSON a schema Protobuf

Incolla un campione JSON e questo strumento deduce la struttura dei tuoi dati e li scrive come una definizione di messaggio Protocol Buffers, pronta per essere inserita in un file .proto. È progettato per il caso comune di convertire una risposta API, un oggetto di configurazione o un record di log in uno schema iniziale, senza dover digitare numeri e tipi di campo manualmente.

Scegli la sintassi proto3 o proto2, nomina il messaggio radice e aggiungi una dichiarazione di package se il tuo progetto la usa. I numeri di campo iniziano da 1 per impostazione predefinita e aumentano di 1 per campo, entrambi configurabili per uno schema di numerazione riservato. Gli array diventano campi repeated, e un oggetto i cui valori sono tutti dello stesso tipo — una ricerca indicizzata per ID o codice di lingua — diventa map<string, T> invece di un messaggio fisso, impedendo che un campo dizionario diventi dozzine di campi denominati. Attiva la parola chiave optional per contrassegnare i campi mancanti o null in parte del tuo campione, e attiva i messaggi annidati per mantenere i tipi figlio all'interno del loro genitore piuttosto che come fratelli di livello superiore. Le stringhe in formato ISO 8601 vengono mappate a google.protobuf.Timestamp, e ogni campo può portare un commento con la sua chiave JSON originale.

Gli oggetti profondamente annidati, gli array di oggetti, gli array di array e i campi di tipo misto sono tutti gestiti: un valore genuinamente misto ritorna a google.protobuf.Value con l'importazione corrispondente aggiunta automaticamente. JSON malformato viene segnalato con la riga e la colonna in cui l'analisi ha avuto esito negativo, piuttosto che un errore generico.

Tutto viene eseguito localmente nel tuo browser — il tuo JSON non viene mai caricato da nessuna parte. Copia lo schema generato, scaricalo come file .txt da rinominare in .proto, o invia l'output a un altro strumento per continuare a lavorare.

FAQ

Produce una sintassi .proto reale e compilabile?
Sì — l'output è una sintassi di messaggio protobuf semplice (proto2 o proto3) che puoi incollare direttamente in un file .proto. La manutenzione a lungo termine, come mantenere stabili i numeri di campo tra le modifiche dello schema, rimane una tua responsabilità.
Come decide tra una map e un messaggio per un campo oggetto?
Quando ogni valore all'interno di un oggetto è dello stesso tipo scalare, viene renderizzato come map<string, T> — la forma che ha un dizionario reale. Non appena un oggetto mescola tipi di valore tra le sue chiavi, diventa un campo di messaggio denominato campo per campo.
Cosa succede con un campo che ha tipi diversi in un campione?
Ritorna a google.protobuf.Value, con l'importazione corrispondente aggiunta automaticamente all'inizio dello schema. Perfeziona il tipo di campo manualmente una volta che hai deciso quale tipo è autorevole.
Posso numerare i campi iniziando da un numero diverso da 1?
Sì — imposta il numero iniziale e il passo nelle opzioni. La numerazione ricomincia dal tuo valore iniziale scelto all'interno di ogni messaggio annidato, corrispondendo a come protobuf delimita i numeri di campo.
Il mio JSON viene caricato da qualche parte?
No. La generazione dello schema viene eseguita interamente nel tuo browser — il tuo JSON non lascia mai il tuo dispositivo.