Décodage JSON avec conversion de type de chaîne en Float64
Lors du décodage d'une chaîne JSON contenant un nombre à virgule flottante, il est possible de rencontrer le erreur "json : impossible de transformer la chaîne en valeur Go de type float64." Ce problème survient lorsque le décodeur JSON tente de convertir automatiquement le nombre d'une chaîne en type float64.
Pour résoudre ce problème, vous pouvez indiquer explicitement au décodeur JSON que la chaîne représente un float64 en utilisant le ", string" dans la définition de la structure :
type Product struct { Name string Price float64 `json:",string"` }
En ajoutant cette balise, le décodeur JSON traitera le champ "price" comme une chaîne encodée float64, permettant une conversion appropriée lors du décodage.
package main import ( "encoding/json" "fmt" ) type Product struct { Name string Price float64 `json:",string"` } func main() { s := `{"name":"Galaxy Nexus", "price":"3460.00"}` var pro Product err := json.Unmarshal([]byte(s), &pro) if err == nil { fmt.Printf("%+v\n", pro) } else { fmt.Println(err) fmt.Printf("%+v\n", pro) } }
Avec cette modification, le programme va désormais décoder avec succès la chaîne JSON et convertir correctement le champ "prix" en un type float64.
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!