Как представить объектную переменную JSON с определением Proto

Я хочу определить сообщение запроса в gRPC, в котором должен быть объект Json в качестве поля, например.

message UserRequest{
    string name = 1;
    string city = 2;
    string email = 3;
    metainfo = 4;//A Json Object variable which can have any number of elements
}

Как представить свойство metainfo в определении прототипа? Я пробовал использовать приведенное ниже определение, но это не сработало.

message UserRequest{
    string name = 1;
    string city = 2;
    string email = 3;
    google.protobuf.Any metainfo = 4;
}

person pranay jain    schedule 02.01.2020    source источник


Ответы (1)


Я думаю, вам нужен .google.protobuf.Struct через struct.proto - это, по сути, инкапсулирует map<string, Value> fields и в целом похоже на то, что вы хотели бы описать через JSON. Кроме того, Struct имеет настраиваемую обработку JSON, как указано в файле:

JSON-представление для Struct - это объект JSON.

So:

    .google.protobuf.Struct metainfo = 4;
person Marc Gravell    schedule 02.01.2020