Pendant le processus de développement, nous utilisons souvent le format JSON pour transmettre des données. Cependant, nous constatons parfois qu'après avoir désorganisé les données JSON dans l'interface, les données numériques sont tronquées. C’est une question très courante, mais qui passe facilement inaperçue. Dans cet article, l'éditeur PHP Zimo présentera en détail les causes de ce problème et comment l'éviter et le résoudre pour garantir l'intégrité et l'exactitude des données numériques.
J'ai donc un json avec de nombreux champs et je le parcours comme suggéré Comment changer efficacement les clés JSON Supprimez certaines clés dont je n'ai pas besoin. Mais après suppression, les valeurs originales du json existant ont changé, certaines d'entre elles semblaient être des flottants, j'ai fait une démo pour le montrer.
Comment changer ce comportement ? Oui interface{}
导致了该问题吗?为什么1684366653200744506
被截断为1684366653200744400
?
Merci !
https://go.dev/play/p/x2auwqwb2fl
Pour référence, le json de sortie devient 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}
En effet, par défaut, encoding/json
包将 float64
est stocké dans la valeur d'interface d'un numéro json. Voir json.unmarshal :
Pour transformer json en une valeur d'interface, unmarshal stocke l'un des éléments suivants dans la valeur d'interface :
Vous pouvez créer un décodeur et appeler (*decoder).usenumber pour modifier le comportement :
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 {
Voirhttps://www.php.cn/link/3a6c2c9231df58107434b942fa600b22.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!