如何在客户端建立一个数据类型为map<String, Object>的消息对象?

How to build a message object with map<String, Object> of data type in client?

我想创建一个带有请求参数消息的 rpc 地图数据类型。

这是我的原型文件。

syntax = "proto3";
package vat;

service VatRecognizer {

    rpc recognizeRequest(Request) returns (Response) {}
}

message Request {
    string method = 1;
    map <string, ApiParams> inputParams = 2;
}

message ApiParams {
    repeated ParamsList params = 1;
}

message ParamsList {
    string key = 1;
    string value = 2;
}

message Response {
    google.protobuf.Timestamp timestamp = 1;
    map <string, string> result = 2;
}

ParamsList paramsList = ParamsList.newBuilder().setKey("key").setValue("xyz").build();
        ApiParams apiParams = ApiParams.newBuilder().addParams(paramsList).build();
Request request = Request.newBuilder().setField(FileDescriptor, object value). build();

如何设置 Request.newBuilder().setField(FileDescriptor, object value)?这里没有拍地图

对于protobuf map类型,protobuf生成代码提供了两种方法;一个用于键值对,另一个用于 java 键值对映射。

Request.newBuilder()
  // Adding one key value pair
  .putResult("key", "value")
  // Adding multiple key value pairs
  .putAllResult(ImmutableMap.of("keyA", "valueA", "keyB", "valyeB"))
  .build();