2010-01-03 5 views
5

Tengo que obtener la estructura del mensaje de un mensaje protobuf transferido a mí sin la definición del mensaje. El uso de métodos UnknownFieldSet, yo era capaz de conseguir una representación de cadena del mensaje de la siguiente manera:Cómo obtener la estructura de un mensaje de Google Protobuf sin la definición

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

¿Qué estructura de datos no representan el campo 2? Usando UnknownFieldSet.Field.getGroupList pude obtener el contenido de los campos 3 y 4, ¿eso significa que el campo 2 tiene la estructura de grupo "en desuso"?

Respuesta

3

Si publicó los datos binarios sin procesar, podríamos informarle, o puede consultar el protocol buffer encoding documentation. Si ve un campo con un tipo de cable de 3, eso indica un grupo.

No estoy tan familiarizado con la API UnknownFieldSet como probablemente debería ser, pero parece que estás tratando con un grupo.

Por otro lado, esperaría que la mayoría de los usos de los grupos sean internos de Google: ¿de dónde provienen estos datos? Es cierto que no hay nada que parada la gente use el formato de grupo en desuso en lugar de mensajes incrustados, pero lo haría esperanza de que pocos lo están haciendo ...

¿Hay alguna razón por la que no se puede pedir la .proto archivo involucrado? Mientras que cierta información ciertamente puede obtenerse de los búferes de protocolo sin sus definiciones, están diseñados para ser utilizados en situaciones donde ambos extremos hacen conocen el formato del mensaje, aunque posiblemente diferentes versiones.

+0

gracias, de hecho es un grupo. – dqminh

Cuestiones relacionadas