Zum Inhalt springen
100% lokal

JSON zu Protobuf Schema

Konvertieren Sie ein JSON-Beispiel in eine Protocol Buffers .proto Nachrichtendefinition.

Eingabe
Ausgabe

JSON zu Protobuf Schema

Fügen Sie ein JSON-Beispiel ein und dieses Tool leitet die Form Ihrer Daten ab und schreibt sie als Protocol Buffers Nachrichtendefinition, bereit zum Einfügen in eine .proto Datei. Es ist für den alltäglichen Fall konzipiert, eine API-Antwort, ein Konfigurationsobjekt oder einen Log-Datensatz in ein Ausgangsschema umzuwandeln, statt Feldnummern und Typen von Hand einzugeben.

Wählen Sie proto3 oder proto2 Syntax, benennen Sie die Wurzelnachricht und fügen Sie eine Paketdeklaration hinzu, wenn Ihr Projekt eine verwendet. Feldnummern beginnen standardmäßig bei 1 und erhöhen sich um 1 pro Feld, beide konfigurierbar für ein im Voraus reserviertes Nummerierungsschema. Arrays werden zu repeated Feldern, und ein Objekt, dessen Werte alle ein und denselben Typ haben — eine nach ID oder Sprachcode indizierte Suche — wird zu map<string, T> statt zu einer festen Nachricht, sodass ein Wörterbuchfeld nicht in Dutzende benannte Felder zerlegt wird. Aktivieren Sie das optional Schlüsselwort, um Felder zu markieren, die in einem Teil Ihres Beispiels fehlen oder null sind, und schalten Sie verschachtelte Nachrichten um, um untergeordnete Typen in ihrem übergeordneten Element zu behalten, statt als flache Geschwister auf oberster Ebene. ISO 8601-ähnliche Datumstrings werden auf google.protobuf.Timestamp abgebildet, und jedes Feld kann einen Kommentar mit seinem ursprünglichen JSON-Schlüssel tragen.

Tiefe verschachtelte Objekte, Arrays von Objekten, Arrays von Arrays und Felder mit gemischten Typen werden alle verarbeitet: Ein echtes Feld mit gemischtem Typ greift auf google.protobuf.Value zurück, wobei der entsprechende Import automatisch hinzugefügt wird. Fehlerhaftes JSON wird mit der Zeile und Spalte gemeldet, wo das Parsing fehlgeschlagen ist, statt einer allgemeinen Fehlermeldung.

Alles läuft lokal in Ihrem Browser — Ihr JSON wird nicht hochgeladen. Kopieren Sie das generierte Schema, laden Sie es als .txt Datei herunter, um es in eine .proto umzubenennen, oder senden Sie die Ausgabe an ein anderes Tool, um weiter zu arbeiten.

Häufige Fragen

Erzeugt es echte, kompilierbare .proto Syntax?
Ja — die Ausgabe ist reine Protobuf Nachrichtensyntax (proto2 oder proto3), die Sie direkt in eine .proto Datei einfügen können. Die langfristige Wartung, wie das Stabilhalten von Feldnummern über Schemaänderungen hinweg, liegt immer noch bei Ihnen.
Wie entscheidet es zwischen map und message für ein Objektfeld?
Wenn alle Werte innerhalb eines Objekts vom gleichen Skalartyp sind, wird es als map<string, T> gerendert — die Form eines echten Wörterbuchs. Sobald ein Objekt Werttypen über seine Schlüssel mischt, wird es stattdessen zu einem benannten Nachrichtenfeld für Feld.
Was geschieht mit einem Feld, das verschiedene Typen in einem Beispiel hat?
Es wird auf google.protobuf.Value zurückgegriffen, wobei der entsprechende Import automatisch oben im Schema hinzugefügt wird. Verfeinern Sie den Feldtyp von Hand, wenn Sie entschieden haben, welcher Typ maßgeblich ist.
Kann ich Felder ab einer anderen Nummer als 1 nummerieren?
Ja — legen Sie die Startnummer und die Schrittweite in den Optionen fest. Die Nummerierung startet mit Ihrem gewählten Startwert in jeder verschachtelten Nachricht neu, wobei die Protobuf Feldnummern in jeder Nachricht erfasst werden.
Wird mein JSON irgendwo hochgeladen?
Nein. Die Schemagenerierung läuft vollständig in Ihrem Browser — Ihr JSON verlässt Ihr Gerät nie.