JSON ↔ Protobuf टूलकिट
JSON से .proto स्कीमा का अनुमान लगाएँ, या अपनी स्कीमा से Protobuf एन्कोड और डिकोड करें
JSON नमूना पेस्ट करें या उदाहरण लोड करें, फिर .proto बनाएँ चुनें।
तीन रूपांतरण, अलग-अलग
JSON → .proto किसी JSON नमूने से proto3 स्कीमा का अनुमान लगाता है। JSON → Protobuf आपकी अपनी .proto स्कीमा और संदेश प्रकार से JSON पेलोड को बाइनरी में एन्कोड करता है, और Protobuf → JSON हेक्स, base64 या बाइनरी फ़ाइल को वापस JSON में डिकोड करता है। स्कीमा का अनुमान और असली एन्कोडिंग अलग काम हैं, इसलिए हर एक का अपना मोड है।
स्कीमा का अनुमान कैसे लगता है
डिफ़ॉल्ट रूप से स्ट्रिंग string बनती हैं, बूलियन bool, दशमलव double और पूर्णांक int64, क्योंकि जो मान आज int32 में समाता है वह कल शायद न समाए। ऑब्जेक्ट अपनी कुंजी से PascalCase नाम वाले संदेश बनते हैं, एक ही प्रकार के ऐरे repeated फ़ील्ड बनते हैं, और ऐरे के सभी ऑब्जेक्ट मिलाए जाते हैं ताकि वैकल्पिक कुंजियाँ न छूटें। केवल null, खाली या मिश्रित मान google.protobuf.Value इस्तेमाल करते हैं और टिप्पणियों में दिखते हैं। फ़ील्ड नंबर कुंजियों के क्रम में दिए जाते हैं; स्कीमा तैनात होने के बाद वे वायर फ़ॉर्मेट का हिस्सा होते हैं और बदलने नहीं चाहिए।
एन्कोडिंग और डिकोडिंग
JSON ProtoJSON मैपिंग इस्तेमाल करता है: lowerCamelCase फ़ील्ड नाम, स्ट्रिंग के रूप में 64-बिट पूर्णांक, base64 में bytes, नाम के रूप में एनम, और Timestamp, Duration, Struct तथा रैपर जैसे जाने-माने प्रकारों के विशेष रूप। उन्नत विकल्पों से डिफ़ॉल्ट मान शामिल किए जा सकते हैं, proto फ़ील्ड नाम रखे जा सकते हैं, एनम संख्या में लिखे जा सकते हैं या अज्ञात JSON फ़ील्ड अनदेखी की जा सकती हैं। डिकोड करते समय वे फ़ील्ड नंबर दिखाए जाते हैं जिन्हें चुना गया संदेश घोषित नहीं करता, जो अक्सर गलत संदेश प्रकार चुने जाने का संकेत होता है।
सीमाएँ और गोपनीयता
स्कीमा स्व-निहित होनी चाहिए: Google के जाने-माने प्रकार (Timestamp, Duration, Struct, Any, Empty, FieldMask और रैपर) शामिल हैं, और दूसरे इंपोर्ट कभी नेटवर्क से नहीं लाए जाते। एक नमूने से एनम, मैप, presence या विकास की योजना पता नहीं चलती, इसलिए हर अनुमानित स्कीमा की समीक्षा करें। सब कुछ आपके ब्राउज़र में चलता है; पेलोड और स्कीमा अपलोड नहीं होते।
