開発プロセスでは、データの送信に JSON 形式を使用することがよくあります。ただし、JSON データをインターフェイスにアンマーシャリングした後、数値データが切り捨てられる場合があります。これは非常によくある質問ですが、見落とされやすい質問です。この記事では、PHP エディターの Zimo が、この問題の原因と、デジタル データの完全性と正確性を確保するためにこの問題を回避および解決する方法を詳しく紹介します。
つまり、多くのフィールドを含む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 パッケージが json 番号のインターフェイス値に
float64 を格納するためです。
json.unmarshal: を参照してください。
bool、json ブール値の場合
動作を変更できます: リーリー 参照
https://www.php.cn/link/3a6c2c9231df58107434b942fa600b22以上がインターフェイスへのアンマーシャリング後に JSON 番号が切り捨てられるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。