Protobuf से JSON Schema
proto3 परिभाषाओं को JSON Schema, TypeScript इंटरफ़ेस और नमूना JSON में बदलें। messages, enums, नेस्टेड टाइप, oneof, map और repeated का समर्थन करता है।
अपडेट किया गया
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
अक्सर पूछे जाने वाले प्रश्न
Protobuf से JSON Schema कनवर्टर क्या है?
Protobuf से JSON Schema कनवर्टर एक मुफ़्त ऑनलाइन टूल है जो proto3 परिभाषाओं को JSON Schema, TypeScript इंटरफ़ेस और नमूना JSON में बदलता है। यह messages, enums, नेस्टेड टाइप, oneof, map और repeated को सपोर्ट करता है। यह पूरी तरह आपके ब्राउज़र में चलता है, बिना किसी इंस्टॉलेशन या साइन-अप के।
इसमें कौन-कौन सी सुविधाएँ हैं?
Proto3: messages, enums, नेस्टेड messages, repeated, optional, oneof, map फ़ील्ड और सभी स्केलर टाइप।
आउटपुट फ़ॉर्मैट कौन-से हैं?
तीन: JSON Schema ($ref के साथ Draft-07), TypeScript इंटरफ़ेस, और प्लेसहोल्डर मानों वाला नमूना JSON।
int64 टाइप को कैसे संभाला जाता है?
इन्हें JSON Schema और TypeScript दोनों में string से मैप किया जाता है, जो 64-बिट पूर्णांकों के लिए मानक protobuf JSON मैपिंग परंपरा का पालन करता है।
क्या Protobuf से JSON Schema कनवर्टर इस्तेमाल करने के लिए मुफ़्त है?
हाँ, Protobuf से JSON Schema कनवर्टर 100% मुफ़्त है, बिना किसी रजिस्ट्रेशन, बिना छिपे शुल्क और बिना किसी उपयोग सीमा के। सारी प्रोसेसिंग आपके ब्राउज़र में स्थानीय रूप से होती है, जिससे पूरी निजता सुनिश्चित होती है।
क्या इस टूल के साथ मेरा डेटा सुरक्षित है?
बिल्कुल। Protobuf से JSON Schema कनवर्टर सब कुछ आपके ब्राउज़र में क्लाइंट-साइड पर प्रोसेस करता है। कोई भी डेटा किसी सर्वर पर अपलोड या संग्रहीत नहीं किया जाता। आपकी सामग्री हर समय आपके डिवाइस पर निजी रहती है।
क्या Protobuf से JSON Schema कनवर्टर मोबाइल डिवाइस पर काम करता है?
हाँ, Protobuf से JSON Schema कनवर्टर पूरी तरह रिस्पॉन्सिव है और स्मार्टफ़ोन व टैबलेट पर काम करता है। आप इसे किसी भी आधुनिक वेब ब्राउज़र वाले डिवाइस पर इस्तेमाल कर सकते हैं, किसी ऐप डाउनलोड की ज़रूरत नहीं।
क्या इस टूल को इस्तेमाल करने के लिए मुझे खाता बनाना होगा?
किसी खाते या रजिस्ट्रेशन की ज़रूरत नहीं है। बस अपने ब्राउज़र में Protobuf से JSON Schema कनवर्टर खोलें और तुरंत इस्तेमाल शुरू करें। कोई साइन-अप बाधा या उपयोग प्रतिबंध नहीं है।
यह टूल किन प्रोग्रामिंग भाषाओं या फ़ॉर्मैट को सपोर्ट करता है?
Protobuf से JSON Schema कनवर्टर कई लोकप्रिय फ़ॉर्मैट और भाषाओं को सपोर्ट करता है। समर्थित विकल्पों की पूरी सूची के लिए टूल के इंटरफ़ेस को देखें।
Protobuf से JSON Schema कनवर्टर का उपयोग कैसे करें?
बस दिए गए फ़ील्ड में अपना इनपुट दर्ज करें, अपनी पसंद के अनुसार सेटिंग्स समायोजित करें, और टूल इसे तुरंत प्रोसेस कर देगा। फिर आप परिणाम को अपने क्लिपबोर्ड पर कॉपी कर सकते हैं या डाउनलोड कर सकते हैं।
.proto फ़ाइल और JSON Schema में क्या अंतर है?
एक .proto फ़ाइल Protocol Buffers की सोर्स डेफिनिशन होती है: यह messages, fields, types, और field numbers डिक्लेयर करती है जिनका उपयोग gRPC और हाई-थ्रूपुट APIs के लिए कॉम्पैक्ट बाइनरी डेटा सीरियलाइज़ करने में होता है। एक JSON Schema यह बताता है कि किसी JSON डॉक्यूमेंट का आकार कैसा होना चाहिए, ताकि validators यह जाँच सकें कि आने या जाने वाले payload में सही fields और types हैं। दोनों एक ही विचार को पूरा करते हैं — एक data contract — लेकिन अलग-अलग दुनिया में: protobuf बाइनरी वायर फॉर्मेट को नियंत्रित करता है, जबकि JSON Schema वेब APIs, configs, और docs में इस्तेमाल होने वाले human-readable JSON को नियंत्रित करता है। एक को दूसरे में कन्वर्ट करने से आप JSON को उसी स्ट्रक्चर के खिलाफ वैलिडेट कर सकते हैं जो आपकी सर्विसेज़ पहले से बाइनरी में लागू करती हैं। यह टूल एक proto3 डेफिनिशन पढ़ता है और एक Draft-07 JSON Schema जनरेट करता है, जो एक शेयर्ड definitions ब्लॉक में $ref पॉइंटर्स का इस्तेमाल करता है, ताकि आप इसे बिना फ़ील्ड नाम हाथ से दोबारा लिखे सीधे किसी validator में डाल सकें।
JSON आउटपुट में int64 वैल्यू को numbers की बजाय strings के रूप में क्यों दिखाया जाता है?
64-बिट इंटीजर टाइप्स — int64, uint64, sint64, fixed64, और sfixed64 — JSON Schema और सैंपल JSON दोनों में numbers की बजाय strings के रूप में दर्शाए जाते हैं। यह कनवर्टर की कोई खामी नहीं है; यह ऑफिशियल Protobuf JSON मैपिंग का पालन करता है। JavaScript का number टाइप एक डबल-प्रिसिज़न फ्लोट है जो सुरक्षित रूप से केवल 2^53 तक के इंटीजर को दर्शा सकता है, इसलिए अगर किसी असली 64-बिट वैल्यू को number के रूप में पार्स किया जाए तो वह चुपचाप अपनी सटीकता खो सकती है। इसे string के रूप में एनकोड करने से हर अंक सुरक्षित रहता है और यह अलग-अलग भाषाओं के बीच बिना किसी नुकसान के आगे-पीछे जा सकता है। int32 और uint32 जैसे 32-बिट इंटीजर सामान्य numbers ही रहते हैं, क्योंकि वे आराम से उस रेंज में फिट होते हैं। यह जानना जरूरी है ताकि जब बैकएंड कोई बड़ा ID या टाइमस्टैम्प भेजे तो वैलिडेशन में कोई हैरानी न हो। अपना स्कीमा यहाँ पेस्ट करें और टूल हर numeric फ़ील्ड पर यह string-बनाम-number नियम अपने आप लागू कर देगा।
repeated, map, और oneof fields को JSON Schema और TypeScript में कैसे कन्वर्ट किया जाता है?
हर protobuf कंस्ट्रक्ट अपने स्वाभाविक JSON समकक्ष में मैप होता है। एक repeated फ़ील्ड JSON array और TypeScript array टाइप बन जाती है, क्योंकि इसमें शून्य या उससे ज़्यादा वैल्यू हो सकती हैं। एक map<key, value> फ़ील्ड को additionalProperties के साथ JSON object के रूप में रेंडर किया जाता है, क्योंकि protobuf माप्स key-value कलेक्शन होते हैं। एक oneof block में हर मेंबर फ़ील्ड को दिखाया जाता है, और JSON Schema यह रिकॉर्ड करता है कि ये विकल्प एक-दूसरे को एक्सक्लूड करते हैं, यानी एक समय में केवल एक ही सेट हो सकता है। Optional fields स्कीमा में non-required बन जाते हैं और TypeScript इंटरफ़ेस में ? पा लेते हैं, जबकि scalar और nested message types $ref पॉइंटर्स के ज़रिए रिज़ॉल्व होते हैं। इसका मतलब है कि जटिल असली-दुनिया के स्कीमा बिना फ्लैट हुए या छूटे, सही ढंग से ट्रांसलेट होते हैं। एक repeated फ़ील्ड, एक map, और एक oneof वाला उदाहरण लोड करने के लिए Sample .proto पर क्लिक करें, फिर टैब्स की तुलना करके देखें कि हर एक को कैसे हैंडल किया जाता है।
जनरेट की गई सैंपल JSON में कनवर्टर किन उदाहरण वैल्यूज़ का इस्तेमाल करता है?
Sample JSON टैब हर फ़ील्ड को एक प्रतिनिधि प्लेसहोल्डर से भरकर एक पूरा उदाहरण ऑब्जेक्ट बनाता है ताकि आप message का आकार तुरंत देख सकें। एक string "example" बन जाती है, एक double 3.14 बन जाता है, इंटीजर fields को स्टैंड-इन numbers मिलते हैं, और एक bytes फ़ील्ड "dGVzdA==" जैसी छोटी base64-एन्कोडेड string दिखाता है क्योंकि JSON में bytes को base64 strings के रूप में टाइप किया जाता है। Repeated fields arrays के रूप में दिखते हैं, माप्स objects के रूप में, और nested messages इनलाइन विस्तारित होते हैं। ये असली डेटा नहीं हैं — ये टाइप्ड स्टैंड-इन हैं जिनका मकसद बिना हाथ से असली-जैसा payload टाइप किए किसी fixture, Postman रिक्वेस्ट बॉडी, या मॉक API रिस्पॉन्स को सीड करना है। चूँकि वैल्यूज़ हर फ़ील्ड के टाइप से मेल खाती हैं, यह उदाहरण उसी proto से जनरेट हुए JSON Schema के खिलाफ पास हो जाएगा। अपना स्कीमा पेस्ट करें और Sample JSON टैब खोलकर तैयार-से-एडिट उदाहरण कॉपी या डाउनलोड करें।
क्या मैं सीधे किसी proto3 फ़ाइल से TypeScript इंटरफ़ेस जनरेट कर सकता हूँ?
हाँ। JSON Schema के साथ-साथ, कनवर्टर तैयार-से-इस्तेमाल TypeScript भी बनाता है: हर message के लिए एक interface और हर protobuf enum के लिए एक असली enum, ताकि आउटपुट सीधे किसी प्रोजेक्ट में जाकर compile-time टाइपिंग दे सके। Field types protobuf JSON मैपिंग को फॉलो करते हैं — strings, numbers, booleans, repeated fields के लिए arrays, और optional fields पर ? मार्कर। 64-बिट इंटीजर को precision loss से बचाने के लिए string टाइप किया जाता है, और bytes fields को base64 strings के रूप में टाइप किया जाता है। आपके .proto में मौजूद इनलाइन कमेंट्स descriptions के रूप में आगे ले जाए जाते हैं, जिससे जनरेट किए गए types डॉक्यूमेंटेड बने रहते हैं। इससे फ्रंटएंड बैकएंड के सोर्स ऑफ ट्रुथ के साथ सिंक में रहता है, बिना हर बार स्कीमा बदलने पर फ़ील्ड नाम हाथ से कॉपी किए — जहाँ आमतौर पर टाइपो और ड्रिफ्ट की गुंजाइश बनती है। अपनी proto3 डेफिनिशन पेस्ट करें, TypeScript टैब पर स्विच करें, फिर रिज़ल्ट कॉपी करें या इसे types.ts के रूप में डाउनलोड करें।
संबंधित टूल
मुफ़्त API टेस्टर ऑनलाइन
GET, POST, PUT, DELETE अनुरोधों के साथ REST API का परीक्षण करें। मुफ़्त, तेज़ और पूरी तरह आपके ब्राउज़र में काम करता है, बिना साइन-अप के।
मुफ़्त cURL से कोड कन्वर्टर
cURL कमांड को JavaScript, Python, PHP कोड में बदलें। मुफ़्त, तेज़ और पूरी तरह आपके ब्राउज़र में काम करता है, बिना साइन-अप के।
मुफ़्त JSON Schema जनरेटर
अपने JSON डेटा से स्वचालित रूप से JSON Schema बनाएं। मुफ़्त, तेज़ और पूरी तरह आपके ब्राउज़र में काम करता है, बिना साइन-अप के।
मुफ़्त HTTP हेडर पार्सर
अनुरोधों और प्रतिक्रियाओं के HTTP हेडर पार्स और विश्लेषण करें। मुफ़्त, तेज़ और पूरी तरह आपके ब्राउज़र में काम करता है, बिना साइन-अप के।
Protobuf to JSON Schema कनवर्टर के बारे में
Protobuf to JSON Schema कनवर्टर किसी भी proto3 .proto डेफिनिशन को एक साथ तीन आउटपुट में बदल देता है: एक JSON Schema, TypeScript इंटरफ़ेस का एक सेट, और प्लेसहोल्डर वैल्यू से भरा एक सैंपल JSON डॉक्यूमेंट। अपना स्कीमा इनपुट बॉक्स में पेस्ट करें और टूल इसे तुरंत पार्स कर देता है, हर आउटपुट को अपने अलग टैब में दिखाने से पहले यह बताता है कि कितने messages, enums, और fields मिले।
यह उन बैकएंड और फुल-स्टैक डेवलपर्स के लिए बनाया गया है जो Protocol Buffers और gRPC के साथ काम करते हैं लेकिन उन्हें JSON की दुनिया में भी आना पड़ता है — चाहे वह API payload वैलिडेट करना हो, क्लाइंट-साइड टाइप्स जनरेट करना हो, या ऐसी टीम के साथ कॉन्ट्रैक्ट शेयर करना हो जो protoc इस्तेमाल नहीं करती। अगर आप बस यह देखना चाहते हैं कि कोई message JSON में कैसा दिखेगा, बिना लोकल में पूरा protobuf टूलचेन सेटअप किए, तो यह टूल ब्राउज़र में ही यह काम कर देता है। न कोई साइन-अप चाहिए, न कुछ इंस्टॉल करना है, और आपका .proto टेक्स्ट कभी आपकी डिवाइस से बाहर नहीं जाता — पार्सिंग और कोड जनरेशन पूरी तरह क्लाइंट-साइड JavaScript में होते हैं।
कनवर्टर क्या-क्या समझता है
पार्सर proto3 को टारगेट करता है और उन कंस्ट्रक्ट्स को हैंडल करता है जो असली स्कीमा में आमतौर पर मिलते हैं:
- Messages और fields, जिसमें स्केलर टाइप्स का पूरा सेट शामिल है (
string,bool,bytes, इंटीजर फैमिली,double, औरfloat)। - Enums, टॉप-लेवल पर भी और किसी message के अंदर नेस्टेड भी।
- Nested messages, किसी भी गहराई तक, जिनके नाम
Order.Addressजैसी डॉटेड डेफिनिशन में फ्लैटन कर दिए जाते हैं। repeatedfields, जिन्हें arrays में मैप किया जाता है।optionalfields, जो स्कीमा में non-required बन जाते हैं और TypeScript में ऑप्शनल (?) हो जाते हैं।map<key, value>fields, जिन्हेंadditionalPropertiesवाले objects के रूप में रेंडर किया जाता है।oneofblocks, जहाँ हर मेंबर को अलग से दिखाया जाता है और JSON Schema यह रिकॉर्ड करता है कि ये विकल्प एक-दूसरे को एक्सक्लूड करते हैं।
package डिक्लेरेशन और इनलाइन कमेंट्स को भी पकड़ लिया जाता है, कमेंट्स को description फ़ील्ड्स और JSDoc एनोटेशन के रूप में आगे ले जाया जाता है।
तीन आउटपुट और वे टाइप्स को कैसे मैप करते हैं
हर टैब को क्लिपबोर्ड पर कॉपी किया जा सकता है या फ़ाइल के रूप में डाउनलोड किया जा सकता है (schema.json, types.ts, या sample.json):
- JSON Schema Draft-07 को फॉलो करता है। नेस्टेड और रेफरेंस्ड message टाइप्स एक शेयर्ड
definitionsब्लॉक में$refपॉइंटर्स इस्तेमाल करते हैं, और रूट$refआपके पहले message की ओर पॉइंट करता है ताकि स्कीमा सीधे किसी validator में डाला जा सके। - TypeScript इंटरफ़ेस हर message के लिए एक
interfaceऔर हर enum के लिए एक असलीenumदेते हैं, ताकि आप रिज़ल्ट को सीधे किसी प्रोजेक्ट में पेस्ट करके compile-time टाइपिंग पा सकें। - Sample JSON एक उदाहरण ऑब्जेक्ट बनाता है जिसमें स्टैंड-इन वैल्यूज़ होती हैं (जैसे, कोई
string"example"बन जाती है, कोईdouble3.14बन जाता है), जो किसी fixture, Postman रिक्वेस्ट, या API मॉक को सीड करने के लिए काम आता है।
एक जानने लायक बात: 64-बिट इंटीजर (int64, uint64, sint64, fixed64, sfixed64) को strings के रूप में दर्शाया जाता है, न कि numbers के रूप में। यह इस टूल की कोई खामी नहीं है — यह ऑफिशियल Protobuf JSON मैपिंग है, क्योंकि 64-बिट इंटीजर उस रेंज से बाहर जा सकता है जिसे JavaScript का number टाइप सुरक्षित रूप से दर्शा सकता है। 32-बिट इंटीजर numbers ही बने रहते हैं, और bytes fields को base64-एन्कोडेड strings के रूप में टाइप किया जाता है।
प्रोटोबफ को JSON में कन्वर्ट क्यों करें
Protocol Buffers वायर पर कॉम्पैक्ट और तेज़ होते हैं, लेकिन JSON अब भी वेब APIs, कॉन्फ़िग फ़ाइलों, और डॉक्यूमेंटेशन की साझा भाषा है। अपने .proto से JSON Schema जनरेट करने से आप आने वाले या जाने वाले JSON को उसी कॉन्ट्रैक्ट के खिलाफ वैलिडेट कर सकते हैं जो आपकी सर्विसेज़ पहले से बाइनरी फॉर्म में लागू करती हैं। TypeScript आउटपुट फ्रंटएंड को बैकएंड के सोर्स ऑफ ट्रुथ के साथ सिंक में रखता है, बिना फ़ील्ड नाम हाथ से कॉपी किए। और एक तैयार सैंपल payload एक असली-जैसा उदाहरण हाथ से टाइप करने की मेहनत बचाता है।
शुरू करने के लिए, Sample .proto पर क्लिक करें ताकि messages, एक enum, नेस्टेड टाइप्स, एक oneof, और एक map वाला एक तैयार उदाहरण लोड हो जाए, फिर टैब्स के बीच स्विच करके देखें कि हर कंस्ट्रक्ट कैसे ट्रांसलेट होता है। जब तैयार हों, इसे अपने खुद के स्कीमा से बदल दें।