JSON mit Typkonvertierung von String in Float64 dekodieren
Beim Dekodieren eines JSON-Strings, der eine Gleitkommazahl enthält, kann es vorkommen, dass Fehler „json: String kann nicht in Go-Wert vom Typ float64 entmarshaliert werden.“ Dieses Problem tritt auf, wenn der JSON-Decoder versucht, die Zahl automatisch von einer Zeichenfolge in einen Float64-Typ umzuwandeln.
Um dieses Problem zu lösen, können Sie dem JSON-Decoder explizit mitteilen, dass die Zeichenfolge einen Float64-Typ darstellt, indem Sie „, string“-Tag in der Strukturdefinition:
type Product struct { Name string Price float64 `json:",string"` }
Durch das Hinzufügen dieses Tags behandelt der JSON-Decoder das Feld „price“ als string-codiertes float64, Dies ermöglicht eine ordnungsgemäße Konvertierung während der Dekodierung.
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) } }
Mit dieser Änderung dekodiert das Programm nun erfolgreich die JSON-Zeichenfolge und konvertiert das Feld „Preis“ korrekt in einen Float64-Typ.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit den Fehlern „json: String kann nicht in Go-Wert vom Typ float64 entmarshaliert werden' beim Dekodieren von JSON um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!