python - False Boolean 未在 proto3 Python 中显示
问题描述
我正在使用protoBuffer 3
它python
没有bool
正确显示字段。
entity_proto
message Foo {
string id = 1;
bool active = 3;
}
在 python 中设置值。
foo = entity_proto.Foo(id='id-123', active=True)
print(foo)
# id: id-123
# active: True
# But if you set the value False it does not show 'active' in print statement
foo = entity_proto.Foo(id='id-123', active=False)
print(foo)
# id: id-123
如果您尝试打印print(foo.active)
输出,False
那是可以的。主要问题是当Http trancoding
我尝试打印时使用不console.log(foo.active)
给我(语言:JavaScript) undefined
false
有人可以让我知道为什么它没有显示False
价值。
解决方案
Prototbuf 具有字段的默认值,例如布尔值 false、数字零或空字符串。
它不会打扰对它们进行编码,因为它会浪费空间和/或带宽(传输时)。这可能是它没有出现的原因。
检查这一点的一个好方法是设置id
一个空字符串,看看它的行为是否相似:
foo = entity_proto.Foo(id='', active=True)
print(foo)
# active: True (I suspect).
解决方案实际上取决于它undefined
的来源。两种 Javascript 都有一个真正的未定义值,在这种情况下,您可以使用 null/undefined 合并运算符:
console.log(foo.active ?? false)
或者,如果这个 HTTP 转码器正在执行类似创建文字“未定义”字符串的操作,您将不得不弄清楚如何将(可能的)None
转换为“假”。
推荐阅读
- laravel - Laravel:仅针对特定数据库引擎运行迁移
- xml - Notepad++:架构无效或缺少命名空间
- css - 具有初始值的 CSS var(--my-var, fallback)。它是一个错误吗?
- python-3.x - 清除文本小部件,用于在每次按下按钮时输入新文本
- python - 如何在已打开的 chromedriver 选项卡上请求数据?
- python - 我想在我的电脑启动时运行我的程序
- php - SugarCRM 预定电子邮件中的日期格式不正确
- cordova - Cordova:如何在构建版本中删除地图文件和 SASS 文件?
- python - 'NoneType' 对象没有属性 'dtype' - 热图功能问题
- flutter - Flutter FutureBuilder/Stream how to show 2 different widgets in ConnectionState.waiting depending on given time