Toolkit JSON ↔ Protobuf
Simpulkan skema .proto dari JSON, atau enkode dan dekode payload Protobuf dengan skema Anda
Tempel contoh JSON atau muat contoh, lalu pilih Buat .proto.
Tiga konversi, terpisah
JSON → .proto menyimpulkan skema proto3 dari contoh JSON. JSON → Protobuf meng-encode payload JSON menjadi biner dengan skema .proto dan tipe pesan Anda sendiri, dan Protobuf → JSON men-decode hex, base64, atau berkas biner kembali ke JSON. Menyimpulkan skema dan encoding sungguhan adalah pekerjaan berbeda, jadi masing-masing punya mode sendiri.
Cara skema disimpulkan
Teks menjadi string, boolean menjadi bool, desimal menjadi double, dan bilangan bulat menjadi int64 secara bawaan, karena nilai yang muat di int32 hari ini belum tentu muat besok. Objek menjadi pesan bernama PascalCase dari kuncinya, array bertipe tunggal menjadi field repeated, dan semua objek dalam array digabung agar kunci opsional tidak terlewat. Nilai yang hanya null, kosong, atau campuran memakai google.protobuf.Value dan dicatat. Nomor field diberikan sesuai urutan kunci; setelah skema dirilis, nomor itu bagian dari format wire dan tidak boleh berubah.
Encode dan decode
JSON memakai pemetaan ProtoJSON: nama field lowerCamelCase, bilangan bulat 64-bit sebagai teks, bytes sebagai base64, enum sebagai nama, dan bentuk khusus tipe well-known seperti Timestamp, Duration, Struct, dan wrapper. Opsi lanjutan dapat menyertakan nilai bawaan, mempertahankan nama field proto, menulis enum sebagai angka, atau mengabaikan field JSON tak dikenal. Saat decode, nomor field yang tidak dideklarasikan pesan terpilih ikut dicantumkan, tanda umum bahwa tipe pesannya salah.
Batasan dan privasi
Skema harus mandiri: tipe well-known Google (Timestamp, Duration, Struct, Any, Empty, FieldMask, dan wrapper) sudah dibundel, dan impor lain tidak pernah diambil dari jaringan. Satu contoh tidak bisa mengungkap enum, map, presence, atau rencana evolusi, jadi tinjau setiap skema hasil inferensi. Semua berjalan di peramban Anda; payload dan skema tidak diunggah.
