2010-01-03 19 views
5

Devo ottenere la struttura del messaggio di un messaggio protobuf trasferito a me senza la definizione del messaggio. Utilizzando metodi UnknownFieldSet, sono stato in grado di ottenere una rappresentazione di stringa del messaggio, come di seguito:Come ottenere la struttura di un messaggio di Google Protobuf senza la definizione

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

Quale struttura di dati disponibili campo 2 rappresenta? Usando UnknownFieldSet.Field.getGroupList sono riuscito ad ottenere il contenuto dei campi 3 e 4, vuol dire che il campo 2 ha la struttura di gruppo "deprecata"?

risposta

3

Se hai postato i dati binari non elaborati, potremmo dirlo, oppure potresti guardare lo protocol buffer encoding documentation. Se vedi un campo con un tipo di filo di 3, questo indica un gruppo.

Non ho familiarità con l'API di UnknownFieldSet come probabilmente dovrebbe essere, ma sembra che abbia a che fare con un gruppo.

D'altra parte, mi aspetterei che la maggior parte degli usi dei gruppi siano interni a Google - da dove provengono questi dati? È vero che non c'è niente da arresto persone di utilizzare il formato di gruppo deprecato invece di messaggi nascosti, ma vorrei speranza che pochi lo stanno facendo ...

C'è qualche ragione per cui non si può chiedere per il Proto file coinvolto? Mentre alcune informazioni possono essere ricavate dai buffer di protocollo senza le loro definizioni, sono davvero progettate per essere utilizzate in situazioni in cui entrambe le estremità conoscono il formato del messaggio , anche se possibilmente versioni diverse.

+0

grazie, è davvero un gruppo. – dqminh

Problemi correlati