Comment contrôler l'ordre de champ lors de la conversion d'un message protobuf à chaîne à l'aide TextFormat en java?

tuk:

J'ai un message protobuf qui , lorsqu'il est converti en chaîne en utilisant des TextFormat.printToString()regards comme ci - dessous: -

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"
}

La définition de proto ressemble ci-dessous

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;
}

Est - il possible d'afficher descriptioncomme premier champ lors de la conversion du proto message à chaîne à l' aide TextFormat.printToString()?

Petr Janecek:

Comme vous le savez probablement en ce moment, le message est codé dans l'ordre des champs - l'ordre des balises. Ceci est garanti par la Message#getAllFields()méthode

est la garantie d'une carte triée, donc itérer sur elle retourne les champs dans l'ordre par numéro de champ

Par conséquent, si vous avez besoin de votre champ de description pour être le premier, vous aurez besoin soit de désapprouver et déplacer tous les champs 1-9 aux numéros 11-19, ou désapprouver le descriptionchamp, et créer un nouveau message semblable à ceci:

message Deployment {
    optional string description = 1;
    required DeploymentDef deploymentDef = 2;
}

Désolé, il n'y a pas beaucoup de meilleures options, l'ordre des champs dans protobuf est (par la conception) pas très important / personnalisable.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=345104&siteId=1
conseillé
Classement