Hoppa till innehåll
100% lokalt

JSON till Protobuf schema

Omvandla ett JSON-exempel till en Protocol Buffers .proto meddelandedefinition.

Inmatning
Utmatning

JSON till Protobuf schema

Klistra in ett JSON-exempel och det här verktyget härleder formen på dina data och skriver ut det som en Protocol Buffers meddelandedefinition, redo att släppa in i en .proto fil. Det är byggt för vardagsfallet att omvandla ett API-svar, ett konfigurationsobjekt eller en loggpost till ett startschema, i stället för att manuellt skriva fältnummer och typer.

Välj proto3 eller proto2 syntax, namnge rotmeddelandet och lägg till en paketdeklaration om ditt projekt använder en. Fältnummer börjar på 1 som standard och ökar med 1 per fält, båda konfigurerbara för ett numreringsschema som reserverats i förväg. Matriser blir upprepade fält, och ett objekt vars värden är av samma typ — en uppslagning nyckla efter ID eller språkkod — blir map<string, T> istället för ett fast meddelande, så ett ordbok-fält blir inte till dussintals namngivna fält. Slå på optional nyckelordet för att markera fält som saknas eller är null i delar av ditt exempel, och slå på kapslade meddelanden för att hålla underordnade typer inom sin överordnade istället för som platta syskon på översta nivå. ISO 8601-liknande datumsträng kartor till google.protobuf.Timestamp, och varje fält kan ha en kommentar med sin ursprungliga JSON-nyckel.

Diupt kapslade objekt, matriser av objekt, matriser av matriser och fält med blandad typ hanteras alla: ett verkligt blandat värde faller tillbaka till google.protobuf.Value med motsvarande import tillagd automatiskt. Malformad JSON rapporteras med raden och kolumnen där tolkningen misslyckades istället för ett allmänt fel.

Allt körs lokalt i din webbläsare — dina JSON lämnas aldrig någonstans. Kopiera det genererade schemat, ladda ned det som en .txt fil för att byta namn till .proto, eller skicka utdata till ett annat verktyg för att fortsätta arbeta.

FAQ

Producerar det verklig, kompilerbar .proto syntax?
Ja — utmatningen är ren Protobuf meddelandesyntax (proto2 eller proto3) som du kan klistra in direkt i en .proto fil. Långsiktig underhål, som att hålla fältnummer stabila över schemaändringar, ligger fortfarande på dig.
Hur bestämmer det mellan map och message för ett objektfält?
När varje värde i ett objekt är av samma skalärtyp, återges det som map<string, T> — formen av ett verkligt ordbok. Så snart ett objekt blandar värdetyper över sina nycklar, blir det istället ett namngivet meddelandefält per fält.
Vad händer med ett fält som har olika typer över ett exempel?
Det faller tillbaka till google.protobuf.Value med motsvarande import tillagd automatiskt högst upp i schemat. Förfina fälttypen för hand när du har beslutat vilken typ som är auktoritär.
Kan jag numrera fält från något annat än 1?
Ja — ange startnummer och steg i alternativen. Numreringen startar om på ditt valda startvärde inuti varje kapslat meddelande, vilket matchar hur Protobuf scopar fältnummer.
Laddas min JSON upp någonstans?
Nej. Schemagenerering körs helt i din webbläsare — dina JSON lämnar aldrig din enhet.