Это можно сделать двумя способами, в зависимости от того, знаете ли вы структуру своего JSON заранее. Если вы это сделаете, вы можете просто написать отдельное сообщение для вашего объекта JSON и включить его в свое исходное сообщение:
message SomeJSONMessage {
// Attributes of your JSON here
}
message HelloRequest {
int32 hello 1;
SomeJSONMessage message = 2;
}
Это возможно потому , что каждый тип JSON карты изначально типу Protobuf.
Если вы не знаете структуру своего JSON заранее, вам придется использовать a google.protobuf.Struct
, который в основном представляет собой JSON без определенной структуры:
message HelloRequest {
int32 hello 1;
google.protobuf.Struct message = 2;
}
Это легко сопоставимо с известными типами во многих языках программирования (объект в JS, dict в Python), но вы не будете иметь никаких гарантий относительно того, какие атрибуты он содержит.