如何在protobuf结构中使用int?

时间:2018-08-13 08:28:12

标签: int protocol-buffers

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

my_dict = {'id': 42}

成为这个:

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

这是非常不幸的,但是从proto definition of struct看,这似乎是设计使然,因为确实只有一个双精度值。

有人知道原因吗?有没有办法手动跟踪哪些数字是整数,哪些是浮点数?

1 个答案:

答案 0 :(得分:0)

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

https://tools.ietf.org/html/rfc7159#page-6

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