Protobuf: правда ли, что при отправке пустого объекта protobuf он преобразуется в нулевой объект?

Я новый пользователь protobuf. Я обнаружил какое-то странное поведение.

У меня есть две службы, которые общаются через protobuf. Когда первая служба отправляет пустой объект protobuf другой службе, другая служба получает не пустой protobuf, а ноль.

Вы испытали это? Если да, то знаете ли вы, как это решить? Я хочу, чтобы другая служба получила пустой объект.


person CrazySynthax    schedule 13.10.2020    source источник


Ответы (1)


Protobuf не имеет понятия null; он может отправить полезную нагрузку нулевой длины, которая должна десериализоваться как пустой объект (поскольку пустой объект имеет нулевую длину), но возможно, что какая-то реализация возвращает значение null. Честно говоря, я бы сказал, что это ошибка в десериализаторе, но полное минимальное воспроизведение помогло бы.

person Marc Gravell    schedule 13.10.2020
comment
Десериализатор является частью пакета protobuf. Верно? Это не другая упаковка/продукт. - person CrazySynthax; 13.10.2020
comment
@CrazySynthax да, но доступно несколько реализаций, даже для одного языка/фреймворка (например, java); вы используете реализацию Google, например? - person Marc Gravell; 14.10.2020