Protobuf zu JSON Schema
Konvertieren Sie proto3-Definitionen in JSON Schema, TypeScript-Interfaces und Beispiel-JSON. Unterstützt messages, enums, verschachtelte Typen, oneof, map und repeated.
Aktualisiert am
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
Häufig gestellte Fragen
Was ist der Protobuf-zu-JSON-Schema-Konverter?
Der Protobuf-zu-JSON-Schema-Konverter ist ein kostenloses Online-Tool, das proto3-Definitionen in JSON Schema, TypeScript-Interfaces und Beispiel-JSON umwandelt. Es unterstützt Messages, Enums, verschachtelte Typen, oneof, map und repeated. Es läuft vollständig in deinem Browser, ohne Installation oder Anmeldung.
Welche Funktionen bietet es?
Proto3: Messages, Enums, verschachtelte Messages, repeated, optional, oneof, map-Felder und alle skalaren Typen.
Welche Ausgabeformate gibt es?
Drei: JSON Schema (Draft-07 mit $ref), TypeScript-Interfaces und Beispiel-JSON mit Platzhalterwerten.
Wie werden int64-Typen behandelt?
Sie werden sowohl in JSON Schema als auch in TypeScript auf string abgebildet, gemäß der standardmäßigen Protobuf-JSON-Mapping-Konvention für 64-Bit-Ganzzahlen.
Ist der Protobuf-zu-JSON-Schema-Konverter kostenlos?
Ja, der Protobuf-zu-JSON-Schema-Konverter ist zu 100 % kostenlos, ohne Registrierung, ohne versteckte Gebühren und ohne Nutzungslimits. Die gesamte Verarbeitung erfolgt lokal in deinem Browser und gewährleistet vollständige Privatsphäre.
Sind meine Daten mit diesem Tool sicher?
Absolut. Der Protobuf-zu-JSON-Schema-Konverter verarbeitet alles clientseitig in deinem Browser. Es werden keine Daten auf einen Server hochgeladen oder dort gespeichert. Deine Inhalte bleiben jederzeit privat auf deinem Gerät.
Funktioniert der Protobuf-zu-JSON-Schema-Konverter auf Mobilgeräten?
Ja, der Protobuf-zu-JSON-Schema-Konverter ist vollständig responsiv und funktioniert auf Smartphones und Tablets. Du kannst ihn auf jedem Gerät mit einem modernen Webbrowser nutzen, ohne App-Download.
Muss ich ein Konto erstellen, um dieses Tool zu nutzen?
Es ist kein Konto und keine Registrierung erforderlich. Öffne einfach den Protobuf-zu-JSON-Schema-Konverter in deinem Browser und beginne sofort mit der Nutzung. Es gibt keine Anmeldeschranken oder Nutzungsbeschränkungen.
Welche Programmiersprachen oder Formate unterstützt dieses Tool?
Der Protobuf-zu-JSON-Schema-Konverter unterstützt eine breite Palette beliebter Formate und Sprachen. In der Benutzeroberfläche des Tools findest du die vollständige Liste der unterstützten Optionen.
Wie verwende ich den Protobuf-zu-JSON-Schema-Konverter?
Gib einfach deine Eingabe in das vorgesehene Feld ein, passe die Einstellungen nach Wunsch an, und das Tool verarbeitet sie sofort. Anschließend kannst du das Ergebnis in die Zwischenablage kopieren oder herunterladen.
Was ist der Unterschied zwischen einer .proto-Datei und einem JSON Schema?
Eine .proto-Datei ist die Quelldefinition für Protocol Buffers: Sie deklariert Messages, Felder, Typen und Feldnummern, die zur Serialisierung kompakter Binärdaten für gRPC und durchsatzstarke APIs verwendet werden. Ein JSON Schema beschreibt die Form eines JSON-Dokuments, damit Validatoren prüfen können, ob eingehende oder ausgehende Payloads die richtigen Felder und Typen haben. Beide verfolgen dieselbe Idee -- einen Datenvertrag -- aber in unterschiedlichen Welten: Protobuf regelt das binäre Wire-Format, während JSON Schema das menschenlesbare JSON regelt, das in Web-APIs, Konfigurationen und Dokumentation verwendet wird. Wandelt man das eine in das andere um, lässt sich JSON gegen dieselbe Struktur validieren, die deine Services bereits binär durchsetzen. Dieses Tool liest eine proto3-Definition und erzeugt ein JSON Schema nach Draft-07, mit $ref-Verweisen in einen gemeinsamen definitions-Block, sodass du es direkt in einen Validator einbinden kannst, ohne Feldnamen von Hand neu zu schreiben.
Warum werden int64-Werte in der JSON-Ausgabe als Strings statt als Zahlen dargestellt?
64-Bit-Integer-Typen -- int64, uint64, sint64, fixed64 und sfixed64 -- werden sowohl im JSON Schema als auch im Beispiel-JSON als Strings dargestellt, nicht als Zahlen. Das ist keine Eigenheit des Konverters, sondern folgt der offiziellen Protobuf-JSON-Zuordnung. JavaScripts number-Typ ist eine Gleitkommazahl mit doppelter Genauigkeit, die Integer nur bis 2^53 sicher darstellen kann, sodass ein echter 64-Bit-Wert bei der Interpretation als Zahl stillschweigend an Präzision verlieren könnte. Die Kodierung als String bewahrt jede Ziffer und lässt sich verlustfrei über Sprachgrenzen hinweg hin- und zurückkonvertieren. 32-Bit-Integer wie int32 und uint32 bleiben einfache Zahlen, da sie problemlos hineinpassen. Dieses Wissen verhindert Überraschungen bei der Validierung, wenn ein Backend eine große ID oder einen Zeitstempel sendet. Füge dein Schema hier ein, und das Tool wendet die String-versus-Zahl-Regel automatisch auf jedes numerische Feld an.
Wie werden repeated-, map- und oneof-Felder in JSON Schema und TypeScript umgewandelt?
Jedes Protobuf-Konstrukt wird auf sein natürliches JSON-Äquivalent abgebildet. Ein repeated-Feld wird zu einem JSON-Array und einem TypeScript-Array-Typ, da es null oder mehr Werte enthalten kann. Ein map<key, value>-Feld wird als JSON-Objekt mit additionalProperties zur Typisierung der Werte dargestellt, weil Protobuf-Maps Schlüssel-Wert-Sammlungen sind. Ein oneof-Block gibt jedes Mitgliedsfeld aus, und das JSON Schema hält fest, dass sich die Optionen gegenseitig ausschließen, sodass immer nur eine gesetzt sein kann. Optionale Felder werden im Schema nicht mehr verpflichtend und erhalten im TypeScript-Interface ein ?, während skalare und verschachtelte Message-Typen über $ref-Verweise aufgelöst werden. Dadurch werden komplexe, reale Schemas originalgetreu übersetzt, statt abgeflacht oder verworfen zu werden. Klicke auf Sample .proto, um ein Beispiel mit einem repeated-Feld, einer map und einem oneof zu laden, und vergleiche dann die Tabs, um genau zu sehen, wie jedes behandelt wird.
Welche Beispielwerte verwendet der Konverter im generierten Beispiel-JSON?
Der Sample-JSON-Tab erstellt ein vollständiges Beispielobjekt, indem jedes Feld mit einem repräsentativen Platzhalter befüllt wird, damit du die Struktur der Message sofort erkennst. Ein string wird zu "example", ein double zu 3.14, Integer-Felder erhalten Platzhalterzahlen, und ein bytes-Feld zeigt einen kurzen base64-kodierten String wie "dGVzdA==", da bytes in JSON als base64-Strings typisiert werden. repeated-Felder erscheinen als Arrays, maps als Objekte, und verschachtelte Messages werden inline ausgeklappt. Das sind keine echten Daten -- es sind typisierte Platzhalter, die dazu gedacht sind, eine Fixture, einen Postman-Request-Body oder eine Mock-API-Antwort zu befüllen, ohne ein realistisches Payload von Hand einzutippen. Da die Werte zum jeweiligen Feldtyp passen, besteht das Beispiel die Validierung gegen das JSON Schema, das das Tool aus demselben proto erzeugt. Füge dein Schema ein und öffne den Sample-JSON-Tab, um ein bearbeitungsfertiges Beispiel zu kopieren oder herunterzuladen.
Kann ich TypeScript-Interfaces direkt aus einer proto3-Datei generieren?
Ja. Neben dem JSON Schema erzeugt der Konverter einsatzbereites TypeScript: ein interface pro Message und ein echtes enum pro Protobuf-Enum, sodass die Ausgabe direkt in ein Projekt übernommen werden kann und Typüberprüfung zur Kompilierzeit liefert. Die Feldtypen folgen der Protobuf-JSON-Zuordnung -- Strings, Zahlen, Booleans, Arrays für repeated-Felder und ?-Markierungen bei optionalen Feldern. 64-Bit-Integer werden als string typisiert, um Präzisionsverluste zu vermeiden, und bytes-Felder werden als base64-Strings typisiert. Inline-Kommentare in deiner .proto werden als Beschreibungen übernommen, sodass die generierten Typen dokumentiert bleiben. Das hält ein Frontend mit der Source of Truth des Backends synchron, ohne Feldnamen bei jeder Schemaänderung von Hand abzutippen -- genau dort schleichen sich sonst Tippfehler und Abweichungen ein. Füge deine proto3-Definition ein, wechsle zum TypeScript-Tab und kopiere das Ergebnis oder lade es als types.ts herunter.
Verwandte Tools
Kostenloser API-Tester Online
Testen Sie REST-APIs mit GET-, POST-, PUT- und DELETE-Anfragen. Kostenlos, schnell und komplett im Browser, ohne Anmeldung.
Kostenloser cURL-zu-Code-Konverter
Wandeln Sie cURL-Befehle in JavaScript-, Python- oder PHP-Code um. Kostenlos, schnell und komplett im Browser, ohne Anmeldung.
Kostenloser JSON-Schema-Generator
Erzeugen Sie automatisch ein JSON Schema aus Ihren JSON-Daten. Kostenlos, schnell und komplett im Browser, ohne Anmeldung.
Kostenloser HTTP-Header-Parser
Analysieren und untersuchen Sie HTTP-Header aus Anfragen und Antworten. Kostenlos, schnell und komplett im Browser, ohne Anmeldung.
Über den Protobuf-zu-JSON-Schema-Konverter
Der Protobuf-zu-JSON-Schema-Konverter verwandelt eine proto3-.proto-Definition auf einen Schlag in drei Artefakte: ein JSON Schema, einen Satz TypeScript-Interfaces und ein Beispieldokument mit Platzhalterwerten. Füge dein Schema in das Eingabefeld ein, und das Tool parst es sofort — mit einer kurzen Zählung der gefundenen Messages, Enums und Felder, bevor jede Ausgabe in einem eigenen Tab angezeigt wird.
Es ist für Backend- und Full-Stack-Entwickler gemacht, die mit Protocol Buffers und gRPC arbeiten, aber gelegentlich in die JSON-Welt wechseln müssen — etwa um API-Payloads zu validieren, clientseitige Typen zu generieren oder einen Vertrag mit einem Team zu teilen, das kein protoc verwendet. Wer nur schnell sehen will, wie eine Message als JSON aussieht, ohne die komplette Protobuf-Toolchain lokal einzurichten, ist hier richtig — alles läuft im Browser. Es gibt keine Registrierung, nichts zu installieren, und dein .proto-Text verlässt niemals dein Gerät: Parsing und Codegenerierung laufen vollständig clientseitig in JavaScript.
Was der Konverter versteht
Der Parser zielt auf proto3 ab und beherrscht die Konstrukte, die in echten Schemas tatsächlich vorkommen:
- Messages und Felder, einschließlich des vollständigen Satzes skalarer Typen (
string,bool,bytes, die Integer-Familie,doubleundfloat). - Enums, sowohl auf oberster Ebene als auch verschachtelt innerhalb einer Message.
- Verschachtelte Messages in beliebiger Tiefe, deren Namen zu Dotted-Definitionen wie
Order.Addressabgeflacht werden. repeated-Felder, die auf Arrays abgebildet werden.optional-Felder, die im Schema nicht mehr verpflichtend sind und in TypeScript optional (?) werden.map<key, value>-Felder, dargestellt als Objekte mitadditionalProperties.oneof-Blöcke, bei denen jedes Mitglied ausgegeben wird und das JSON Schema die sich gegenseitig ausschließenden Optionen festhält.
Auch die package-Deklaration und Inline-Kommentare werden erfasst — Kommentare werden als description-Felder und JSDoc-Annotationen übernommen.
Die drei Ausgaben und wie sie Typen abbilden
Jeder Tab lässt sich in die Zwischenablage kopieren oder als Datei herunterladen (schema.json, types.ts oder sample.json):
- JSON Schema folgt Draft-07. Verschachtelte und referenzierte Message-Typen nutzen
$ref-Verweise in einen gemeinsamendefinitions-Block, und der Root-$refzeigt auf deine erste Message, sodass das Schema direkt in einen Validator eingebunden werden kann. - TypeScript-Interfaces liefern ein
interfacepro Message und ein echtesenumpro Enum, sodass du das Ergebnis direkt in ein Projekt einfügen und Typüberprüfung zur Kompilierzeit erhalten kannst. - Sample JSON erzeugt ein Beispielobjekt mit Platzhalterwerten (ein
stringwird zum Beispiel zu"example", eindoublezu3.14) — praktisch, um eine Fixture, eine Postman-Anfrage oder einen API-Mock zu befüllen.
Ein Detail, das man kennen sollte: 64-Bit-Integer (int64, uint64, sint64, fixed64, sfixed64) werden als Strings dargestellt, nicht als Zahlen. Das ist keine Eigenheit dieses Tools, sondern die offizielle Protobuf-JSON-Zuordnung — denn ein 64-Bit-Integer kann den Bereich überschreiten, den JavaScripts number-Typ sicher darstellen kann. 32-Bit-Integer bleiben Zahlen, und bytes-Felder werden als base64-kodierte Strings typisiert.
Warum Protobuf überhaupt in JSON umwandeln
Protocol Buffers sind kompakt und schnell auf der Leitung, aber JSON ist nach wie vor die Lingua Franca von Web-APIs, Konfigurationsdateien und Dokumentation. Wenn du aus deiner .proto ein JSON Schema generierst, kannst du eingehendes oder ausgehendes JSON gegen denselben Vertrag validieren, den deine Services bereits in binärer Form durchsetzen. Die TypeScript-Ausgabe hält ein Frontend mit der Source of Truth des Backends synchron, ohne Feldnamen von Hand abzutippen. Und ein fertiges Beispiel-Payload erspart dir die Mühe, ein realistisches Beispiel manuell zu schreiben.
Klicke auf Sample .proto, um ein durchgearbeitetes Beispiel mit Messages, einem Enum, verschachtelten Typen, einem oneof und einer map zu laden, und wechsle dann zwischen den Tabs, um zu sehen, wie jedes Konstrukt übersetzt wird. Ersetze es jederzeit durch dein eigenes Schema.