ชุดเครื่องมือ JSON ↔ Protobuf
อนุมานสคีมา .proto จาก JSON หรือเข้ารหัสและถอดรหัส Protobuf ด้วยสคีมาของคุณ
วางตัวอย่าง JSON หรือโหลดตัวอย่าง แล้วเลือก สร้าง .proto
สามการแปลงที่แยกจากกัน
JSON → .proto อนุมานสคีมา proto3 จากตัวอย่าง JSON ส่วน JSON → Protobuf เข้ารหัสเพย์โหลด JSON เป็นไบนารีด้วยสคีมา .proto และชนิดข้อความของคุณเอง และ Protobuf → JSON ถอดรหัสฐานสิบหก base64 หรือไฟล์ไบนารีกลับเป็น JSON การอนุมานสคีมากับการเข้ารหัสจริงเป็นงานคนละอย่าง จึงแยกเป็นโหมดของตัวเอง
วิธีอนุมานสคีมา
โดยค่าเริ่มต้น สตริงจะเป็น string บูลีนเป็น bool ทศนิยมเป็น double และจำนวนเต็มเป็น int64 เพราะค่าที่วันนี้พอดีกับ int32 อาจไม่พอดีในวันหน้า ออบเจ็กต์จะเป็นข้อความที่ตั้งชื่อแบบ PascalCase ตามคีย์ อาร์เรย์ที่มีชนิดเดียวจะเป็นฟิลด์ repeated และออบเจ็กต์ทุกตัวในอาร์เรย์จะถูกรวมกันเพื่อไม่ให้พลาดคีย์ที่ไม่บังคับ ค่าที่มีแต่ null ว่าง หรือปนหลายชนิดจะใช้ google.protobuf.Value และแสดงในหมายเหตุ หมายเลขฟิลด์กำหนดตามลำดับคีย์ เมื่อนำสคีมาไปใช้งานแล้ว หมายเลขเหล่านี้เป็นส่วนหนึ่งของรูปแบบไวร์และห้ามเปลี่ยน
การเข้ารหัสและถอดรหัส
JSON ใช้การแมป ProtoJSON: ชื่อฟิลด์แบบ lowerCamelCase จำนวนเต็ม 64 บิตเป็นสตริง bytes เป็น base64 enum เป็นชื่อ และรูปแบบพิเศษของชนิดมาตรฐาน เช่น Timestamp, Duration, Struct และ wrapper ตัวเลือกขั้นสูงช่วยให้แสดงค่าเริ่มต้น คงชื่อฟิลด์ proto เขียน enum เป็นตัวเลข หรือละเว้นฟิลด์ JSON ที่ไม่รู้จัก ขณะถอดรหัสจะแสดงหมายเลขฟิลด์ที่ข้อความที่เลือกไม่ได้ประกาศ ซึ่งมักเป็นสัญญาณว่าเลือกชนิดข้อความผิด
ข้อจำกัดและความเป็นส่วนตัว
สคีมาต้องสมบูรณ์ในตัวเอง: มีชนิดมาตรฐานของ Google (Timestamp, Duration, Struct, Any, Empty, FieldMask และ wrapper) ให้ในตัว และจะไม่ดึงการนำเข้าอื่นจากเครือข่าย ตัวอย่างเดียวไม่อาจเผย enum แมป presence หรือแผนการพัฒนา จึงควรตรวจทานสคีมาที่อนุมานทุกครั้ง ทุกอย่างทำงานในเบราว์เซอร์ของคุณ เพย์โหลดและสคีมาไม่ถูกอัปโหลด
