在开发过程中,我们经常会使用JSON格式来传输数据。然而,有时候我们会发现在解组jsON数据到接口后,数字数据会被截断。这是一个很常见的问题,但却很容易被忽视。在本文中,PHP小编子墨
在开发过程中,我们经常会使用JSON格式来传输数据。然而,有时候我们会发现在解组jsON数据到接口后,数字数据会被截断。这是一个很常见的问题,但却很容易被忽视。在本文中,PHP小编子墨将详细介绍这个问题的原因,以及如何避免和解决这个问题,确保数字数据的完整性和准确性。
所以我有一个包含许多字段的 json,并且我按照建议循环遍历它 如何有效地更改 json 键 删除一些我不需要的键。但是删除后,现有json的原始值发生了变化,其中一些似乎是浮点数,我做了一个演示来展示它。
如何改变这种行为?是 interface{}
导致了该问题吗?为什么1684366653200744506
被截断为1684366653200744400
?
谢谢!
https://Go.dev/play/p/x2auwqwb2fl
作为参考,输出 json 更改为 1684366653200744400
2009/11/10 23:00:00 1684366653200744448.000000
2009/11/10 23:00:00 map[timestamp:1.6843666532007444e+18]
2009/11/10 23:00:00 json Marshal from maps of key string and value interface to batch json for insert to DB
2009/11/10 23:00:00 {"timestamp":1684366653200744400}
这是因为默认情况下,encoding/json
包将 float64
存储在 json 数字的接口值中。请参阅 json.unmarshal:
要将 json 解组为接口值,unmarshal 将以下内容之一存储在接口值中:
您可以创建解码器并调用 (*decoder).usenumber改变行为:
jsonBatch := `{"timestamp":1684366653200744506, "todelete":"string value or boolean value"}`
dec := json.NewDecoder(strings.NewReader(jsonBatch))
dec.UseNumber()
var i interface{}
if err := dec.Decode(&i); err != nil {
参见Https://www.php.cn/link/3a6c2c9231df58107434b942fa600b22.
以上就是JSON 数字在解组到接口后被截断的详细内容,更多请关注编程网其它相关文章!
--结束END--
本文标题: JSON 数字在解组到接口后被截断
本文链接: https://www.lsjlt.com/news/563000.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0