Heim >Backend-Entwicklung >Golang >Wie gehe ich mit String-zu-Float64-Konvertierungsfehlern beim Dekodieren von JSON in Go um?

Wie gehe ich mit String-zu-Float64-Konvertierungsfehlern beim Dekodieren von JSON in Go um?

Barbara Streisand
Barbara StreisandOriginal
2024-12-25 00:39:11165Durchsuche

How to Handle String-to-Float64 Conversion Errors When Decoding JSON in Go?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn