如何使用 Proto 定义表示 JSON 对象变量

pra*_*ain 5 java protocol-buffers proto grpc grpc-java

我想在 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
}
Run Code Online (Sandbox Code Playgroud)

如何在 proto 定义中表示元信息属性?我试过使用下面的定义,但没有用。

message UserRequest{
    string name = 1;
    string city = 2;
    string email = 3;
    google.protobuf.Any metainfo = 4;
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 16

我认为你想要一个.google.protobuf.Struct, 通过struct.proto - 这本质上封装了一个map<string, Value> fields, 并且大致类似于你想要通过 JSON 描述的内容。此外,Struct还具有自定义 JSON 处理,如文件中所述:

JSON 表示Struct是 JSON 对象。

所以:

    .google.protobuf.Struct metainfo = 4;
Run Code Online (Sandbox Code Playgroud)