Przejdź do treści

JSON na schemat Protobuf

Przetworz proba JSON na definicje wiadomosci Protocol Buffers .proto.

Wejście
Wynik

JSON na schemat Protobuf

Wklej probe JSON i to narzedzie wnioskuje ksztalt twoich danych i napisze go jako definicje wiadomosci Protocol Buffers, którą możesz wkleić bezposrednio do pliku .proto. Jest zaprojektowany dla zwykłego przypadku konwersji odpowiedzi API, obiektu konfiguracji lub rekordu dziennika na początkowy schemat zamiast ręcznego pisania numerów pól i typów.

Wybierz składnie proto3 lub proto2, nazwij główną wiadomość i jeśli twój projekt jej używa, dodaj deklaracje pakietu. Numery pól zaczynają się od 1 domyslnie i zwiększają się o 1 na pole, obie konfiguruje dla schematu numeracji zarezerwowanego z góry. Pola staną się polami powtórzonych i obiekt, którego wartości są tego samego typu — wyszukiwanie po ID lub kodzie języka — stanie się map<string, T> zamiast stałej wiadomosci, więc pole slownika nie zmieni się na dziesiatki nazwanych pól. Wlącz słowo kluczowe optional, aby oznaczyć pola brakujące lub null w części twojej proby, i przełączaj wiadomosci zagniezdzone, aby zachować typy ich obiektu nadrzednego zamiast plskich rodzeństwa na górnym poziomie. Łańcuchy dat wyglądające jak ISO 8601 mapują sie na google.protobuf.Timestamp i każde pole może nosić komentarz z jego pierwotnym kluczem JSON.

Glębokie obiekty zagniezdzone, pola obiektów, pola pól i pola typu mieszanego są wszystkie obsługiwane: naprawde mieszana wartość typu wraca do google.protobuf.Value z odpowiednim importem dodanym automatycznie. Niedopuszczalny JSON jest raportowany z wierszem i kolumną, w której parsowanie sie nie powiodlo, zamiast ogólnego błędu.

Wszystko działa lokalnie w twojej przegląderce — twój JSON nigdy nie jest nigdzie przesłany. Skopiuj wygenerowany schemat, pobierz go jako plik .txt, aby go można było zmienić na .proto, lub wyślij wynik do innego narzędzia, aby kontynuować pracę.

Częste pytania

Czy to produkuje rzeczywista, kompilowalną skladnie .proto?
Tak — wynik jest czystą skladnia wiadomosci protobuf (proto2 lub proto3), którą możesz wkleić bezpośrednio do pliku .proto. Długotrwałe utrzymanie, takie jak utrzymanie stabilnych numerów pól w ramach zmian schematu, pozostaje na tobie.
Jak się decyduje między mapą a wiadomością dla pola obiektu?
Gdy każda wartość w obiekcie jest tego samego typu skalarnego, jest renderowana jako map<string, T> — kształt, który ma rzeczywisty słownik. Gdy tylko obiekt miesza typy wartości w swoich kluczach, staje się polem wiadomości o nazwie pole po polu zamiast tego.
Co się dzieje z polem, które ma różne typy w próbie?
Wraca do google.protobuf.Value z odpowiednim importem dodanym na górze schematu. Sprecyzuj typ pola ręcznie, gdy zdecydowales sie, który typ jest autorytatywny.
Czy mogę zacząć numerować pola od innego numeru niż 1?
Tak — ustaw numer początkowy i krok w opcjach. Numeracja restartuje się na wybranej przez ciebie wartości początkowej w każdej wiadomości zagniezdzonej, co odpowiada temu, jak protobuf określa zakresy numerów pól.
Czy mój JSON jest gdzieś przesłany?
Nie. Generowanie schematu działa całkowicie w twojej przeglądarce — twój JSON nigdy nie opuszcza twoje urządzenie.