JSON ↔ Protobuf 工具箱

從 JSON 推斷 .proto 結構描述,或用你的結構描述編碼和解碼 Protobuf 訊息

JSON 範例

最多 5 MB。

選項

欄位名稱
進階

產生的 .proto

尚無結構描述
貼上 JSON 範例或載入範例,然後選擇「產生 .proto」。

貼上 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 位元整數為字串,bytes 為 base64,列舉為名稱,以及 Timestamp、Duration、Struct 和包裝類型等常用類型的特殊形式。進階選項可以輸出預設值、保留 proto 欄位名稱、把列舉寫成數字或忽略未知的 JSON 欄位。解碼時會列出所選訊息未宣告的欄位編號,這通常表示選錯了訊息類型。

限制與隱私

結構描述必須自給自足:已內建 Google 常用類型(Timestamp、Duration、Struct、Any、Empty、FieldMask 和包裝類型),其他匯入絕不會從網路取得。單一範例無法揭露列舉、映射、存在性或演進計畫,因此請審查每個推斷出的結構描述。所有處理都在瀏覽器中進行;訊息和結構描述不會上傳。

CodingTool 已正式上線於

Launched on StartupBaseCodingTool.dev - Free, Fast & Easy Developer Tools in One Place | Product HuntCodingTool - Featured on Startup FameFazier badgeListed on Turbo0Featured on Twelve ToolsFeatured on Findly.toolsLaunchpadly Startup DirectoryCodingTool.dev — Featured on Smol Launch