トゥクトゥク:
私が使用して文字列に変換いるProtobufメッセージ持つTextFormat.printToString()
以下のようなルックスを-
deploymentDef {
id: "PX3C1ED"
default: true
type: ONPREM
limits {
clusterSize: 3
limits {
numVMs: 18000
numVMsWithFlows: 18000
activeFlows: 6000000
totalFlows: 24000000
flowPlanning: 4000000
numDevices: 40
}
}
isEnterprise: false
brickSize: XLARGE
clusterSize: 3
description: "Default Role, Non-Enterprise, App-Discovery and Vf services stopped"
}
以下のようなプロト定義ルックス
message DeploymentDef {
optional string id = 1;
optional bool default = 2;
optional DeploymentType type = 3;
optional PlatformClusterLimits limits = 4;
repeated Role roles = 5;
optional bool isEnterprise = 6;
optional Configs overrides = 7;
optional BrickSize brickSize = 8;
optional int32 clusterSize = 9;
optional string description = 10;
}
それが表示することが可能であるdescription
使用して文字列にプロトメッセージを変換しながら最初のフィールドとしてTextFormat.printToString()
?
ペトルJanecek:
タグの順序-あなたはおそらく今理解したように、メッセージは、フィールドの順にエンコードされています。これは、によって保証されてMessage#getAllFields()
いる方法
ソートマップであることが保証され、それを反復することは、フィールド番号順でフィールドを返します。
あなたの説明フィールドが必要な場合はそのため、あなたはどちらか廃止と数字11-19に、すべてのフィールドに1-9を移動し、または廃止する必要があります最初のものであるためにdescription
フィールドを、およびこれに類似した新しいメッセージを作成します。
message Deployment {
optional string description = 1;
required DeploymentDef deploymentDef = 2;
}
申し訳ありませんが、多くのより良い選択肢がない、いるProtobuf内のフィールドの順序は、(設計上)ではない非常に重要な/カスタマイズ可能です。