Sări la conținut
Complet local

Schema JSON în Protobuf

Convertiți un exemplu JSON într-o definiție de mesaj Protocol Buffers .proto.

Intrare
Ieșire

Schema JSON în Protobuf

Lipiți un exemplu JSON și aceasta unealtă deduce forma datelor dvs. și le scrie ca o definiție de mesaj Protocol Buffers, gată de introdus într-un fişier .proto. Este construită pentru cazul cotidian de a converti un răspuns de API, un obiect de configurare sau o înregistrare jurnal într-o schemă inițială, în loc să tastați manual numere de câmp și tipuri.

Alegeți sintaxa proto3 sau proto2, numiți mesajul rădăcină și adăugați o declarație de pachet dacă proiectul dvs. utilizează una. Numerele câmpurilor încep la 1 în mod implicit și cresc cu 1 per câmp, ambele configurabile pentru o schemă de numerotare rezervată în avans. Masivele devin câmpuri repeated, iar un obiect ale cărui valori sunt toate de același tip — o căutare indexată după ID sau cod limbă — devine map<string, T> în loc de un mesaj fix, pentru ca un câmp dicționar să nu se transforme în zeci de câmpuri numite. Activați cuvântul cheie optional pentru a marca câmpurile absente sau nule în partea din eșantion dvs., și comutați mesajele imbricare pentru a ține tipuri copil în interiorul părintelui în loc de frai de nivel superior plat. Șirurile de date cu aspect ISO 8601 se mapează la google.protobuf.Timestamp, iar fiecare câmp poate purta un comentariu cu cheia JSON originală.

Obiectele profund imbricare, masive de obiecte, masive de masive și câmpuri de tip mixt sunt toate tratate: o valoare cu tip mixt autentic se retrage la google.protobuf.Value cu importul corespunzător adăugat automat. JSON malformat este raportat cu linia și coloana în care analiza a eșuat în loc de o eroare generică.

Tot ceea ce se execută local în browserul dvs. — JSON-ul dvs. nu este niciodată trimis nicăieri. Copiați schema generată, descărcați-o ca fişier .txt pentru a redenumi în .proto, sau trimiteți rezultatul unei alte unelte pentru a continua să lucrez.

FAQ

Produce sintaxă reală și compilabilă .proto?
Da — rezultatul este sintaxă de mesaj protobuf simplu (proto2 sau proto3) pe care o puteți lipi direct într-un fişier .proto. Întreținerea pe termen lung, cum ar fi menținerea stabilă a numerelor câmpurilor între modificări de schemă, este în continuare responsabilitatea dvs.
Cum decide între o hartă și un mesaj pentru un câmp de obiect?
Atunci când fiecare valoare din interiorul unui obiect este de același tip scalar, este redată ca map<string, T> — forma pe care o are un dicționar real. Imediat ce un obiect amestecă tipuri de valori pe cheile sale, devine un câmp de mesaj numit câmp după câmp în schimb.
Ce se întâmplă cu un câmp care are tipuri diferite pe o mostră?
Se retrage la google.protobuf.Value, cu importul corespunzător adăugat în partea de sus a schemei. Perfecționați tipul câmpului manual odată ce ați decis ce tip este autoritativ.
Pot număra câmpurile începând de la o altă parte decât 1?
Da — setați numărul de start și pasul în opțiuni. Numerotarea reîncepe la valoarea de start aleasă în interiorul fiecărui mesaj imbricat, corespunzând cu modul în care protobuf scopes numerele câmpurilor.
JSON-ul meu este trimis undeva?
Nu. Generarea schemei se execută integral în browserul dvs. — JSON-ul dvs. nu pleacă niciodată din dispozitiv.