rxecore
@rxecore

Как организовать вложенные сообщения в protobuf?

Добрый день!
Мне нужно прочитать тип сообщения и в зависимости от его типа уже парсить, в го я сделал бы так
type Message strcut {
     typeMessage string
      Body interface {}// Суда я могу положить что угодно , так и в protobuf хотелось бы
}

или пример JSON
var msg {
     typeMsg: user_info,
     body: user{
           id : 564,
           name:dwadswa 
},
 }

как вариант я вижу
message Message {
       string typeMessage = 1;
       bytes  body = 2;
}

но мне кажется это плохая идея и есть вариант по лучше. гугл не дал результатов или я их не понял.Спасибо
  • Вопрос задан
  • 435 просмотров
Решения вопроса 1
dnovikoff
@dnovikoff
Использовать google.protobuf.Any, если тип не известен
или использовать oneof, если типов ограниченное количество и они известны
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
В протобуфе придётся делать несколько полей, по одному на каждый тип сообщения. После получения айди типа, обращаться к нужному полю.
Ответ написан
Комментировать
@klim0v
я бы предложил использовать google.protobuf.Struct — это просто прототипное представление объекта JSON. Любое сообщение proto3 может быть механически преобразовано в JSON и встроено в поле этого типа. Это очень гибкий тип и дает преимущества динамической типизации для protobuf.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы