代表一个protobuf地图作为json

时间:2018-04-25 09:25:08

标签: grpc proto protobufjs

我正在使用基于protobuf.js的grpcc来测试我的grpc服务API。

我的.proto文件:

message MyRequest {
    string userId = 1;
    map<string, string> params = 2;
}

我尝试了以下json正文发送请求:

{userId : "my_user_id" , params: { name: "my_name"}}
{userId : "my_user_id" , params: [{"name":"my_name"}] }

但这会产生以下错误:

Error: Illegal value for Message.Field....MyRequest.params of type string: object (expected ProtoBuf.Map or raw object for map field)

如何正确地将protobuf地图表示为json?

1 个答案:

答案 0 :(得分:0)

适当的json体将如下:

{ "userId": "my_user_id", "params": { "name": "my_name" } }

您尝试过的是一系列地图,这些地图在protobuf的背景下并不是真正的意义。 map<string, string>正是json对象的描述,因此可以通过以下方式表示多个值:

{ "params": { "key1": "value1", "key2": "value2" } }

不需要阵列。