Maison >développement back-end >Golang >Comment décomposer les valeurs numériques JSON avec des exposants dans Golang ?
Golang Json Unmarshal Numeric with Exponent
Lors de la désagrégation d'une chaîne JSON dans une structure dans Golang, les valeurs numériques avec exposants sont souvent interprétées comme 0 . Cela peut être un défi, car les exposants font partie intégrante du JSON. spécification.
Pour résoudre ce problème, le type du champ numérique doit être modifié en float32 ou float64. Ces types à virgule flottante prennent en charge la représentation des exposants. Par exemple :
type Person struct { Id float64 `json:"id"` _Id int64 Name string `json:"name"` }
Après avoir modifié le type, la désagrégation de la chaîne JSON dans la structure analysera correctement la valeur numérique avec l'exposant.
Approche alternative avec une fonction d'assistance
Si vous avez besoin que le champ numérique soit un entier, vous pouvez utiliser une fonction d'assistance pour convertir le valeur à virgule flottante au type entier après démarshaling :
import ( "encoding/json" "fmt" "math" "os" "reflect" ) type Person struct { Id float64 `json:"id"` _Id int64 Name string `json:"name"` } var f Person var b = []byte(`{"id": 1.2e+8, "Name": "Fernando"}`) func main() { _ = json.Unmarshal(b, &f) if reflect.TypeOf(f._Id) == reflect.TypeOf((int64)(0)) { fmt.Println(math.Trunc(f.Id)) f._Id = int64(f.Id) } }
Dans cet exemple, la fonction d'assistance math.Trunc tronque la valeur à virgule flottante en un entier. La valeur tronquée est ensuite affectée au champ _Id.
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!