Как бы вы закодировали карту <String, Object> с использованием буферов протокола? - PullRequest
14 голосов
/ 09 июля 2009

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

Мой формат сообщения должен содержать записи Map ... но как мне написать определение .proto?

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

Есть идеи?

1 Ответ

10 голосов
/ 09 июля 2009

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

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

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

...