gmo*_*lau 6 int protocol-buffers
我注意到当将 Python 字典转换为 google.protobuf.Struct 时,整数会变成浮点数,即:
my_dict = {'id': 42}
Run Code Online (Sandbox Code Playgroud)
变成这样:
fields {
key: "id"
value {
number_value: 42.0
}
}
Run Code Online (Sandbox Code Playgroud)
这是非常不幸的,但是查看struct的proto 定义似乎这是设计使然,因为确实只有双精度值。
有谁知道这是什么原因,有没有办法解决这个问题,而无需手动跟踪哪些数字是整数,哪些是浮点数?
由于com.google.protobuf.Struct是为了存储 JSON 数据而创建的,它遵循 JSON 规范,不区分 Integer 和 Float:
https://www.rfc-editor.org/rfc/rfc7159#page-6
JSON 的实现提供了整数数据类型,例如JSONObject。然而,这样的实现通常依赖于将 numeric 转换为 Integer。请参阅JsonNumber.isIntegral。