В настоящее время я использую Protobuf версии 2 в моем проекте. Пока что все сообщения работают отлично; однако я наткнулся на блокпост, пытаясь использовать ключевое слово map.
Использование TLDR, связанное с необходимостью карты, заключается в том, что я хочу передать некоторые пары ключ / значение JSON на мой сервер, чтобы выполнить поиск, и потенциальный журнал данных на сервер (который использует интерфейс сообщений JSON).
В настоящее время я использую метод обратной совместимости, рекомендованный на странице документов: https://developers.google.com/protocol-buffers/docs/proto#maps
Я хотел бы понять, почему следующее объявление моего сообщения (с использованием карт) не может быть скомпилировано? Я использую следующую версию компилятора protoc: '# protoc --version => libprotoc 2.6.1'
message MapFieldEntry {
optional string key = 1;
optional string value = 2;
}
message Lookup {
repeated MapFieldEntry map_field = 1;
map<string, string> test_map = 2;
}
Я получаю следующую ошибку (ошибки не имеют смысла для меня, учитывая документацию по функции карты):
Expected "required", "optional", or "repeated".
Expected field name.
Я попытался добавить синтаксис = "proto2"; вверху, но я все еще получаю ошибку.
Edit:
Просто как записка; проблема, которую я имею, касается второго аргумента сообщения поиска. Первый аргумент - это то, что я сейчас использую для обхода.