2010-01-03 7 views
5

Je dois transférer la structure du message d'un protobuf message à moi sans la définition du message. En utilisant des méthodes UnknownFieldSet, je suis en mesure d'obtenir une représentation de chaîne du message comme ci-dessous:Comment obtenir la structure d'un message Google Protobuf sans la définition

1: "a" 
2: { 
    3:"b" 
    4:"c" 
} 

Quelle est la structure des données ne représentent 2 champ? En utilisant UnknownFieldSet.Field.getGroupList j'ai été en mesure d'obtenir le contenu des champs 3 et 4, cela signifie-t-il que le champ 2 a la structure de groupe "obsolète"?

Répondre

3

Si vous avez publié les données binaires brutes, nous pourrions vous le dire - ou vous pouvez regarder le protocol buffer encoding documentation. Si vous voyez un champ avec un type de fil de 3, cela indique un groupe.

Je ne connais pas aussi bien l'API UnknownFieldSet que je ne devrais probablement l'être, mais il semble que vous ayez affaire à un groupe. D'autre part, je m'attendrais à ce que la plupart des utilisations des groupes soient internes à Google - d'où viennent ces données? Il est vrai qu'il n'y a rien à arrêt les gens d'utiliser le format de groupe dépréciée au lieu de messages incorporés, mais je espoir que peu le font ...

Y at-il une raison quelconque vous ne pouvez pas demander la .proto fichier impliqué? Tandis que des informations peuvent certainement être glanées à partir des tampons de protocole sans leurs définitions, ils sont vraiment conçus pour être utilisés dans des situations où les deux extrémités connaissent le format du message - bien que possiblement des versions différentes.

+0

merci, c'est en effet un groupe. – dqminh

Questions connexes