我有一些有趣的案例。我们有嵌入式设备,将JSON数据推送到我们的服务器。我们在发送时使用校验和来处理数据,因此设备会计算出有效负载的校验和,然后发送JSON数据POST消息。
如果没有带尾随零的小数,我们就可以了。但是,如果我们遇到undefined
/ double
值的密钥,我们就会遇到麻烦。我们不能在设备上使用float
格式化程序(STM32),因此我们需要执行%g
之类的操作来获取发送到服务器的小数点。
%1.5i
现在,设备会计算{
"key":"emXOlXEBv9",
"data":[
"key_with_trailing_zeros":12.200,
"time":"2017-12-22 19:35:41"}
],
"csum":"XXX"
}
和key
属性的校验和。当我们将它发送到服务器并在data
之后转储它们时:
json_encode
尽管我们的系统可以使用数据值,但校验和失败,因为用于计算校验和的字符串缓冲区有些不同。
没有魔术技巧我不能在设备上使用{
"key":"emXOlXEBv9",
"data":[
"key_with_trailing_zeros":12.2,
"time":"2017-12-22 19:35:41"}
],
"csum":"XXX"
}
或%f
,所以我有什么选择,将所有字段转换为字符串并读取服务器上的数值或者是否有一些魔法物品我还没有找到?