0

我正在使用 grpc-gateway,我想公开一个带有以下 json 响应的 api:

{
  "id": "123",
  "name": "MyItem",
  "properties": {
    "propA": 1,
    "propB": "some value",
    "propC": true,
  }
}

“属性”中的值是动态的,并且无法提前知道。

到目前为止,我的原型定义是:

message Item {
  message PropertyValue {
    string string_value = 1;
    int32 number_value = 2;
    bool bool_value = 3;
  }
  
  string id = 1;
  string name = 2;
  map<string, PropertyValue> properties = 3; 
}

但这会产生如下响应:

{
  "id": "123",
  "name": "MyItem",
  "properties": {
    "propA": {
      "number_value": 1
    },
    "propB": {
      "string_value": "some value"
    },
    "propC": {
      "bool_value": true
    }
  }
}

如何修改我的原型,以便在没有额外输入信息的情况下将属性作为 json 映射返回?

4

1 回答 1

0

这个答案将我指向 google.protobuf.Struct。所以我将我的信息更改为:

message Item {
  string id = 1;
  string name = 2;
  google.protobuf.Struct properties = 3; 
}

这实现了我想要的。

于 2021-07-02T16:46:51.087 回答