json - 各种类型的相同protobuf消息字段名称
问题描述
我正在尝试设置一个protobuf
与模式匹配的协议json
。架构由json
几个相互引用的对象组成。其中一个对象PV
具有一个属性value
,根据架构,该属性可以是字符串、布尔值或另一个对象,S
. 我对如何protobuf
在保留名称的同时在模式中定义它有疑问value
。问题是通过Python 对象解析json
遵循json
模式的文件。protobuf
我试过了
message PV{
oneof value{
string stringValue=3;
bool boolValue=4;
S sValue=5;
}
}
这会导致以下错误:
Message type "PV" has no field named "value"
当试图将json
遵循json
模式的文件解析protobuf
为 Python 对象时。
我也试过:
message PV{
google.protobuf.Any value=2;
}
没有成功。
问题是:是否可以扭曲protobuf
保留消息的字段名称,在我的情况下为值,但让它成为包括其他消息在内的多种类型?
先感谢您!
解决方案
查看python生成的代码:https ://developers.google.com/protocol-buffers/docs/reference/python-generated#oneof
oneof 名称(在您的情况下为“值”)不会生成到任何字段中。在您的情况下google.protobuf.Value
,可能是正确的解决方案。
推荐阅读
- java - Gson“来自Json”
- flutter - 我似乎在这里遇到了 HTTP403 错误。这是我为访问 Google 地图上的位置而编写的代码。我输入了正确的 Google Maps Api 密钥
- mysql - 过滤掉具有空值的行
- javascript - 多个 JS 异步函数读取和修改同一个变量会导致竞争条件/意外的变量值吗?需要来咨询
- encryption - 如何在 SOAP UI Tool 中对肥皂消息进行签名和加密?
- graphql - Mule4# 有效的 DWL 来格式化 graphQL 请求
- sql - 我可以减少这个查询吗?
- amazon-web-services - aws 云端。是否可以增加标头大小的配额
- angular - 具有可观察值更改的 Angular 最佳实践
- python - 如何从线程中异步获取返回值?