代码之家  ›  专栏  ›  技术社区  ›  Maddy

将protobuf映射表示为json

  •  4
  • Maddy  · 技术社区  · 7 年前

    我正在使用 grpcc ,它基于protobuf。js,以测试我的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 回复  |  直到 7 年前
        1
  •  1
  •   Nicolas Noble    7 年前

    正确的json正文如下:

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

    您尝试做的是一组映射,在protobuf的上下文中,这实际上没有任何意义。A. map<string, string> 正是json对象的描述,因此可以用以下方式表示多个值:

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

    不需要阵列。

    推荐文章