Cookie の使用について.本サイトでは、基本機能の提供に必要な必須 Cookie を使用しています。さらに、同意いただいた場合に限り、アクセス解析 Cookie を利用して利用状況を把握し、サービス改善に役立てます。詳しくは .
このツールは使いやすかったですか?
フィードバックは改善に役立ちます
将JSON数据转换为Protobuf消息定义
Protobufスタイルガイドに従い、camelCaseを自動的にsnake_caseに変換します。
JSONを入力すると、対応する.protoファイル構造が生成されます。
概要
解決できる課題、処理の仕組み、データの範囲を確認できます。
このツールは、JSONオブジェクトまたはオブジェクト配列のサンプルを読み取り、Protocol Buffers(Protobuf)のメッセージ定義を.proto形式のテキストとして出力します。JSONデータをProtobufバイナリへ変換する機能ではありません。.protoはデータの項目名・型・番号を記述する設計図で、実際に各言語で使うコードやシリアライズ処理は別途プロジェクトのツールチェーンで生成・確認します。
ルートメッセージ名、任意のpackage名、proto2またはproto3、フィールド名をsnake_caseにするかを指定できます。出力はコピーして編集できます。
現在の入力値を見て、文字列はstring、真偽値はbool、整数は範囲に応じてint32またはint64、小数はdoubleとして表します。オブジェクトは別のmessage、配列はrepeatedフィールドになります。たとえば、{"tags":["dev","tools"]}なら、文字列を繰り返すフィールドの草案になります。フィールド番号は各message内で項目の出現順に1から付けられます。
JSONは入力例にすぎません。ある項目が常に存在するか、nullを許すか、数値の範囲、列挙値、将来の変更方針まではサンプルだけで確定できません。したがって生成結果は契約そのものではなく、設計を始めるための下書きとして扱います。
ルートが配列の場合は先頭のオブジェクトから、オブジェクト内の配列も先頭要素から構造を推定します。後続の要素だけにあるキーや異なる型は反映されません。空配列は型を判断できないためstringのrepeatedとして出力され、nullはstringの項目として注記されます。入れ子配列は通常の配列型として表現できず、文字列扱いの注記が付く場合があります。
整数値だけでint32とint64の意味を決めきれない場合や、桁の大きいIDを正確に保ちたい場合も、業務上の型を人が選び直してください。JSONの数値は処理系間で精度差が生じることがあるため、桁を厳密に保持する識別子はサンプル段階から文字列として表す方法も検討します。
使い方
手順に沿って操作し、例を使って入力と結果を確認します。
JSONオブジェクト、または先頭がオブジェクトの配列を入力します。複数の実例がある場合は、各例でキーや値の型が一致するか先に見比べてください。
ルートメッセージ名を入力し、必要ならpackage名を指定します。proto2/proto3を選び、既存プロジェクトの命名に合わせてsnake_case変換を切り替えます。
messageの分割、各フィールド型、repeatedの有無、フィールド番号を確認し、結果をコピーします。空配列、null、後続レコード固有の項目は特に見直します。
既存の定義や番号と照合してから、プロジェクトで使用するProtobufコンパイラで解析し、複数の実データを使って読み書きを確認します。
活用例
仕事や日常の流れの中での活用方法を紹介します。
JSON形式の応答例をもとにmessageのたたき台を作り、APIの担当者と項目・型をレビューするときに使えます。複数の応答パターンを照合し、先頭例にないフィールドを手で補います。
ログやテスト用のJSONからネストしたオブジェクトと配列の大枠を.protoへ写す出発点にできます。生成された番号や型をそのまま本番仕様とせず、既存スキーマとの整合を確認します。
Q&A
よくある疑問や迷いやすい点をまとめて確認できます。
いいえ。配列の先頭要素を使って定義案を作ります。後続だけにあるフィールドや型の違いは、入力前に代表例へ統合するか、出力後に手動で追加してください。
配列に値がないため要素型を観察できず、stringを仮の型として出力します。用途に応じて適切なスカラー型またはmessage型へ直してください。
なりません。この出力ではnullの項目をstringとして注記します。nullが意味する「未設定」「不明」「空文字とは別の値」などを決め、必要なら型や表現を設計し直してください。
そのままの採用は避けてください。番号は現在のキー順で割り振られ、既存の番号、予約済み番号、互換性方針は考慮されません。プロジェクトの定義と照合し、コンパイラおよび実データで検証します。
注意
利用範囲、結果の制限、必要な注意点を事前に確認します。
サンプル推定では、必須性、値の全範囲、列挙、map、oneof、業務上の制約、バージョン間の互換性は決まりません。proto2/proto3の選択やsnake_case変換も、既存システムの方針に合わせて確認してください。
生成順に付くフィールド番号は草案用です。公開済みメッセージでは番号がデータ形式上の識別に使われ、変更や再利用が互換性を損なうことがあります。既存の.protoと照合し、廃止項目を含めて番号を管理してください。生成されたテキストの文法確認だけでなく、対象言語のコード生成と実際のシリアライズ・読み戻しまで検証してから採用します。
サンプルに個人情報、秘密鍵、アクセストークン、顧客データを含めないでください。共有や記録に適した合成データ、または識別情報を取り除いた例を使います。
関連
関連ツール、特集、利用可能なAPIを探せます。