Представлять протобуф карту как json
Я использую 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 ответ
Решение
Правильное тело json будет следующим:
{ "userId": "my_user_id", "params": { "name": "my_name" } }
То, что вы пытались сделать, это массив карт, которые ничего не значат в контексте protobuf. map<string, string>
это в точности описание объекта json, поэтому несколько значений будут представлены следующим образом:
{ "params": { "key1": "value1", "key2": "value2" } }
Нет необходимости в массиве.