Как бы вы закодировали карту<String, Object=""> используя буферы протокола?
-
12-09-2019 - |
Вопрос
Я пытаюсь использовать Буферы протоколов для сериализации сообщений.
Формат моего сообщения должен содержать карту< Строка, Объект > записи ...но как мне написать определение .proto?
Насколько я знаю, Protocol Buffers не имеет встроенного типа карты.Я мог бы смоделировать это, используя повторяющиеся поля.Но большая проблема, с которой я сталкиваюсь, заключается в том, что вам нужно определить все ваши типы.Я хочу, чтобы мое сообщение было гибким, поэтому я не могу указывать типы.
Есть какие-нибудь идеи?
Решение
Я бы смоделировал кортеж с ключом и значением (вероятно, по одному полю значения для каждого типа, которым может быть значение).Затем просто создайте повторяющийся список этого типа кортежа.Вам нужно было бы создать саму карту в коде.
Когда вы говорите, что не можете указать типы - о каких типах вы говорите?Если у вас есть необязательное поле каждого типа в кортеже, то это сработало бы для всех примитивов - и вы мог бы сопоставьте сообщения, сериализуя их в байтовую строку.
Похоже, что уровень "неструктурированности", который у вас есть, возможно, не очень подходит для PB.