Preskoči na sadržaj
100% lokalno

JSON u Protobuf shemu

Pretvori JSON primjer u definiciju Protocol Buffers .proto poruke.

Unos
Rezultat

JSON u Protobuf shemu

Zalijepi JSON primjer i ovaj alat zaključuje oblik tvojih podataka i zapisuje ga kao definiciju Protocol Buffers poruke, spreman da se ubaci u .proto datoteku. Izgrađen je za svakodnevni slučaj pretvaranja API odgovora, objekta konfiguracije ili zapisnika u inicijalnu shemu, umjesto ručnog pisanja brojeva polja i tipova.

Odaberi proto3 ili proto2 sintaksu, nazovi glavnu pouku i dodaj deklaraciju paketa ako ga tvoj projekt koristi. Brojevi polja počinju od 1 prema zadanoj postavci i povećavaju se za 1 po polju, oba se mogu konfigurirati za brojevnu shemu rezerviranu unaprijed. Niz postaje repeated polje, a objekt čije su sve vrijednosti jednog tipa — pretraga identificirana ključem ili kodom jezika — postaje map<string, T> umjesto fiksne poruke, tako da polje rječnika ne postaje deseci nazvanih polja. Uključi optional ključnu reč da označiš polja koja nedostaju ili su null u dijelu tvog uzorka, i prebaci ugniježđene poruke da zadržiš child tipove unutar svojih roditelja umjesto kao ravnih vrhovnih sljednika. ISO 8601 datumi se mapiraju u google.protobuf.Timestamp, a svako polje može sadržavati komentar sa njegovim originalnim JSON ključem.

Gluboko ugniježđeni objekti, nizovi objekata, nizovi nizova i polja miješanih tipova se sve obrađuju: osjetljivo vrijednost miješanog tipa pada na google.protobuf.Value s automatski dodanom odgovarajućom importacijom. Oštećeni JSON se prijavljivuje s linijom i stupcem gdje je analiza neuspješna umjesto generičke greške.

Svršetkom se odvija lokalno u tvom pregledniku — tvoj JSON se nigdje ne učitava. Kopiraj generirane shemu, preuzmi je kao .txt datoteku da je preimenuje u .proto, ili pošalji izlaz drugom alatu da nastaviš s radom.

FAQ

Proizvodi li pravi, kompajlabilan .proto sintaksu?
Da — izlaz je obična sintaksa protocol buffer poruke (proto2 ili proto3) koju možeš direktno zalijepiti u .proto datoteku. Dugoročno održavanje, poput održavanja stabilnih brojeva polja kroz promjene sheme, još je uvijek na tebi.
Kako se odlučuje između mape i poruke za objektno polje?
Kada je svaka vrijednost unutar objekta istog skalarnog tipa, renderira se kao map<string, T> — oblik koji pravi rječnik ima. Čim objekt miješa tipove vrijednosti preko svojih ključeva, postaje polje nazvane poruke polje po polje umjesto.
Što se dešava sa poljem koje ima različite tipove preko uzorka?
Pada na google.protobuf.Value, s odgovarajućim importom dodanim na vrh sheme. Usavršavanje tipa polja je još uvijek na tebi čim si odlučio koji tip je avtoritetan.
Mogu li numerirati polja počevši od nečega drugog od 1?
Da — postavi broj početka i korak u mogućnostima. Numeracija se resetira na tvoju odabranu početnu vrijednost unutar svake ugniježđene poruke, što se podudara s načinom kako protobuf ograničava brojeve polja.
Je li moj JSON učitan negdje?
Ne. Generiranje sheme se odvija potpuno u tvom pregledniku — tvoj JSON nikada ne napušta tvoj uređaj.