protocol-buffers - 如何表示一个单例或集合的 oneof 值?
问题描述
考虑以下两个 JSON 格式的字段的有效值。output
字段有时是单例,有时是集合。
1)
{
"output": 3.1
}
2)
{
"output": [3.1, 4.5]
}
这在 proto3 中可以表示吗?
我最接近的是这样的
message MyObject {
oneof output {
double output_value = 1;
DoubleArray output_array = 2;
}
}
message DoubleArray {
repeated double values = 1;
}
这会导致对象中的名称不同,并且还会向集合值添加嵌套。
解决方案
不幸的是,从GH2592 开始,似乎考虑了重复的 oneofs 字段,但由于实施中的复杂性太多而最终被拒绝。
创建具有重复字段的包装消息(如您所做的那样)是此解决方案的规范解决方法。
message MyObject {
oneof output {
double value = 1;
DoubleArray values = 2;
}
}
message DoubleArray {
repeated double values = 1;
}
推荐阅读
- flutter - Flutter 未来布尔函数总是返回默认值
- android-recyclerview - 如果 dp 中未给出 rc 视图高度,则 NestedScrollView 内的 RecyclerView 不会保留回收器滚动位置
- javascript - 如何在 react-google-maps 中设置起点
- r - R中的Rstan错误:inDL和LoadLibrary失败中的错误
- java - 未找到 Opencv 管理器包!!尝试安装它
- elasticsearch - 在弹性搜索中如何过滤多个字段的结果集
- amazon-web-services - AWS Serverless 如何向我的 Web 应用程序添加和调用私有 API 网关,以便安全地处理敏感数据
- java - MySQL没有将数据从Eclipse插入数据库
- php - 如何在没有视图 ID 的情况下导出 Google 分析数据
- html - 全局禁用时如何更改 Mat-Checkbox 的颜色?