当前位置: 首页 > 知识库问答 >
问题:

使用grpc网关返回json映射值

宋建柏
2023-03-14

我正在使用grpc网关,我想公开一个带有以下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
    }
  }
}

如何修改proto,使属性以json映射的形式返回,而不需要额外的键入信息?

共有1个答案

轩辕实
2023-03-14

这个答案把我引向了google.protobuf.结构。所以我把我的信息改为:

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

这就达到了我想要的。

 类似资料:
  • 我有一个API阶段没有使用“Lambda代理集成”,它有一个Lambda函数传递一个错误。 在映射模板中,我有以下内容: 有可能做我想做的事吗?我找不到$util.parsejson(即stringify)的反向。 谢谢!

  • 我有两个字符串值ID和值来自我的代码,我需要将其存储在映射中,而不是遍历映射,而是通过检查键值是否存在于映射中。ID可以多次使用不同的值,在这种情况下,我将它添加到ID的现有条目中,并将值与现有值一起添加 我用String和List创建了一个映射来添加值,但我面临着困难, Map >accessMap=new HashMap >(); 如果键不存在,则添加一个带有ID和值的新条目(作为列表)。 如

  • 我有一个JSON字符串: ...我试图映射回POJO: 上面的字符串(我正在尝试映射)实际上包含在一个组织中。json。JSONObject,可以通过调用该对象的方法来获取。 我想使用Jackson JSON对象/JSON映射框架来进行此映射,到目前为止,这是我最好的尝试: 我需要地图绘制者: 完全忽略外部的花括号(“”和“”) 如果唯一的方法是调用的方法,那么就这样吧。但我想知道Jackson是

  • 我有一个方法返回。代码如下类所示: 和作为错误。 如何解决此错误

  • 我试图使用MapStruct在dto和实体对象之间映射convert,但是生成的映射器实现只返回空的映射对象。 BeermapperImpl 任何人都可以提供我的代码可能出错的地方?谢谢!

  • 我想询问一个人,并得到以下回应: 但在需要时,我还想包含字段,并获得如下内容: 但是,我得到的只是手机ID,就像这样: 这是两个有问题的领域: