JSON mit Typkonvertierung von String in Float64 dekodieren
In Golang kann das Dekodieren von JSON-Strings mit Float-Zahlen manchmal zu Fehlern bei der Verwendung von Typen führen wie float64. Im Folgenden wird auf das Problem eingegangen und eine Lösung bereitgestellt.
Berücksichtigen Sie die folgende JSON-Eingabe:
{"name":"Galaxy Nexus", "price":"3460.00"}
Und einen entsprechenden Go-Typ:
type Product struct { Name string Price float64 }
Unmarshaling des JSON Die Verwendung des integrierten JSON-Pakets kann zu einem Fehler führen:
json: cannot unmarshal string into Go value of type float64
Dieser Fehler tritt auf, weil das JSON-Preisfeld ein ist Zeichenfolge, während das Feld „Go Price“ ein Float64-Wert ist. Um dieses Problem zu beheben, teilen Sie dem JSON-Interpreter mit, dass es sich bei dem Preisfeld um einen string-codierten float64-Wert handelt:
type Product struct { Name string Price float64 `json:",string"` }
Durch Hinzufügen von „string“ zum JSON-Tag konvertiert der Interpreter den String-Preis währenddessen automatisch in einen float64-Wert Dekodierung. Das Ausführen des geänderten Codes erzeugt nun die erwartete Ausgabe:
{Name:Galaxy Nexus Price:3460}
In Fällen, in denen während der JSON-Decodierung eine Typkonvertierung erforderlich ist, bietet die Verwendung des JSON-Tags mit „string“ (oder anderen Typkonvertierungsspezifizierern) eine einfache und einfache Möglichkeit effektive Lösung.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit String-zu-Float64-Konvertierungsfehlern beim Dekodieren von JSON in Go um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!