Как бы вы кодировали карту <String, Object> с использованием протокольных буферов?

Я пытаюсь использовать Буферы протокола для сериализации сообщений.

Формат моего сообщения должен содержать карту < String, Object > entries... но как написать определение .proto?

Насколько я знаю, в буферах протокола нет встроенного типа карты. Я мог бы моделировать это, используя повторяющиеся поля. Но большая проблема заключается в том, что вам нужно определить все ваши типы. Я хочу, чтобы мое сообщение было гибким, поэтому я не могу указать типы.

Любые идеи?

Ответы

Ответ 1

Я бы моделировал кортеж с ключом и значением (возможно, одно поле значения для каждого типа, которое могло бы быть значением). Затем просто повторите список этого типа кортежа. Вам нужно будет создать карту в коде.

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

Похоже, что уровень "неструктуры" у вас, возможно, не подходит для PB.