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

映射字段中的键不能是浮点/双精度、字节或消息类型

鞠修雅
2023-03-14

我们计划将现有服务转移到grpc服务。因此需要将服务转换为proto定义的消息类型。在响应中,我们使用自定义对象作为键进行映射。

例如响应:

 //java
 Map<key_object, Project>

//proto
map<key_object_not_supported, Project> projects = 3;

在官方文件中,他们提到,

其中key\u类型可以是任何整型或字符串类型(因此,除了浮点类型和字节之外的任何标量类型)。value\u type可以是任何类型

是否有任何替代方法来实现自定义对象键映射在原型3中?

共有1个答案

宰父桐
2023-03-14

对map的支持是一个相当新的扩展。如果关键点与约束不匹配,可以使用旧方法:

定义密钥对消息并将其用作重复字段。因此,在您的示例中:

message KeyValuePair {
  key_object_not_supported key = 1;
  Project value = 2;
}

message MyMap {
  repeated KeyValuePair entries = 1;
}
 类似资料:
  • 问题内容: 是否有比浮点精度更好的数据类型? 问题答案: 小数数据类型 与基于硬件的二进制浮点数不同,十进制模块具有用户可更改的精度(默认为28位),可以与给定问题所需的精度一样大。 如果您对性能问题感到困扰,请查看GMPY

  • 我不明白为什么浮点值与双精度值不同。从下面的示例来看,对于相同的操作,float 提供的结果似乎与双精度型不同: 输出: 你能解释一下float和double之间的区别吗?

  • 问题内容: 如何使用正则表达式从字符串中提取双精度值。 问题答案: 这是简单的方法。请勿将regex用于内置类型。

  • 问题内容: Java中的“浮点文字”和“浮点文字”是同一东西吗? 另外,在Java中是否有所谓的“双文字”? 问题答案: “浮点文字”是指任何浮点类型的文字。这两个和的浮点类型。 我以前从没碰过“浮点文字”这个词,但我想它的意图与“浮点文字”是一样的。 不过,您应该确保要求澄清, 因为如果作者打算说“浮点文字”,那么那将特别是类型的文字,而不仅仅是一般的浮点类型。 至于Java中浮点文字的特定类型

  • 问题内容: 如何使用正则表达式从字符串中提取双精度值。 问题答案: 是简单的方法。请勿将regex用于内置类型。

  • 本文向大家介绍C#浮点,双精度,十进制,包括了C#浮点,双精度,十进制的使用技巧和注意事项,需要的朋友参考一下 示例 浮动 float是.NET数据类型的别名System.Single。它允许存储IEEE 754单精度浮点数。存在此数据类型mscorlib.dll,每个C#项目在创建它们时都会隐式引用该数据类型。 大致范围:-3.4×10 38至3.4×10 38 十进制精度:6-9个有效数字 记