首页 > 解决方案 > 如何在 protobuf 结构中使用整数?

问题描述

我注意到在将 Python 字典转换为 google.protobuf.Struct 时,整数会变成浮点数,即:

my_dict = {'id': 42}

变成这样:

fields {
    key: "id"
    value {
        number_value: 42.0
    }
}

这是非常不幸的,但看看struct 的原始定义,这似乎是设计使然,因为确实只有一个双数值。

有谁知道这是什么原因,有没有办法在不手动跟踪哪些数字是整数和哪些是浮点数的情况下解决这个问题?

标签: intprotocol-buffers

解决方案


com.google.protobuf.Struct创建来存储 JSON 数据一样,它遵循不区分 Integer 和 Float 的 JSON 规范:

https://www.rfc-editor.org/rfc/rfc7159#page-6

有提供整数数据类型的 JSON 实现,例如JSONObject。但是,这种实现通常依赖于将数字转换为整数。请参阅JsonNumber.isIntegral


推荐阅读