Представлять протобуф карту как json - PullRequest
0 голосов
/ 25 апреля 2018

Я использую grpcc , основанный на protobuf.js, для тестирования моих API-интерфейсов службы grpc.

Мой .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 голосов
/ 27 апреля 2018

Правильное тело json будет следующим:

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

То, что вы пытались сделать, это массив карт, которые ничего не значат в контексте protobuf. map<string, string> - это в точности описание объекта json, поэтому несколько значений будут представлены следующим образом:

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

Нет необходимости в массиве.

...