我们在通过反射服务动态调用服务时, 并没有服务对应的描述文件, 这个时候需要将参数从一个格式转换成protobuf的message对象, JSON是一个简单通用的格式. gRPC官方提供了一个用于JSON对象和Protobuf对象互转的工具
    首先引用maven依赖:

    1. <dependency>
    2. <groupId>com.google.protobuf</groupId>
    3. <artifactId>protobuf-java-util</artifactId>
    4. <version>3.12.0</version>
    5. </dependency>
    // protobuf message转json
    HelloReply rep = HelloReply.newBuilder().setMessage("haha").build()
    String json = JsonFormat.printer().print(rep)
    
    // json转 protobuf message
    Descriptors.MethodDescriptor methodDescriptor = ...
    DynamicMessage.Builder messageBuilder = DynamicMessage.newBuilder(methodDescriptor.getInputType());
    JsonFormat.parser().merge(json, messageBuilder);
    Message msg = messageBuilder.build();
    // or
    HelloReply.Builder builder = HelloReply.newBuilder();
    JsonFormat.parser().merge(json, builder);
    HelloReply msg = builder.build()