2010-01-03 1 views
5

Мне нужно передать структуру сообщения protobuf, переданную мне без определения сообщения. Используя методы UnknownFieldSet, я был в состоянии получить строковое представление сообщения, как показано ниже:Как получить структуру сообщения Google Protobuf без определения

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

Какую структуру данных имеет поле 2 представляет? Используя UnknownFieldSet.Field.getGroupList, я смог получить содержимое полей 3 и 4, означает ли это, что поле 2 имеет «устаревшую» структуру группы?

ответ

3

Если вы разместили необработанные двоичные данные, которые мы могли бы вам рассказать - или вы могли бы посмотреть на protocol buffer encoding documentation. Если вы видите поле с проводным типом 3, это указывает на группу.

Я не так хорошо знаком с API UnknownFieldSet, насколько я, вероятно, должен быть, но похоже, что вы имеете дело с группой.

С другой стороны, я ожидал бы, что большинство использования групп будет внутренним для Google - откуда взялись эти данные? Правда, там нет ничего, чтобы стоп людей от использования устаревшего формата группы вместо внедренных сообщений, но я бы надежда что немногие делают это ...

Есть ли какой-либо причине вы не можете попросить .proto файл? Хотя некоторая информация может быть почерпнута из буферов протоколов без их определений, они действительно предназначены для использования в ситуациях, когда оба конца do знают формат сообщения - хотя возможно и разные версии.

+0

спасибо, это действительно группа. – dqminh