decodieren jSON mit Typ Conversion von String in float64 in Go
an JSON -Strings analysieren, die Float64 -Werte enthalten, können Herausforderungen stellen, wenn die Werte als Strings geliefert werden. Um dieses Problem anzugehen, bietet Go eine einfache Lösung.
den Fehler verstehen:
beim Versuch, eine JSON -String wie "{" Name ":" Galaxy Nexus "zu dekodieren," Preis ":" 3460.00 "}" Mit der JSONSHALUSHAL -Funktion, die die folgenden Folgen ergeben, werden Sie möglicherweise mit der JSON -Funktion. Fehler:
json: cannot unmarshal string into Go value of type float64
dieser Fehler vorkommen, weil der JSON -Decoder versucht, die String -Darstellung der Float64 -Nummer in einen Float64 -Wert direkt zu konvertieren, was nicht unterstützt wird. Beheben Sie dieses Problem, Sie müssen den Decoder explizit anweisen, die Zeichenfolge als Float64 mithilfe einer Annotation von Typ Conversion zu behandeln. Diese Annotation wird der Felddefinition in der Produktstruktur hinzugefügt:
Geben Sie die Produktstruktur {ein Name Zeichenfolge Preis float64 `JSON:", String "` } the ", String" tag dem JSON -Decoder, dass das Preisfeld ein Zeichenfolge ist, der in einen Float64 konvertiert werden sollte. importieren ( "Codierung/JSON" "fmt" ) Geben Sie Produktstrukturen ein { Name Zeichenfolge Preis float64 `JSON:", String "` } func main () { S: = `{" Name ":" Galaxy Nexus "," Preis ":" 3460.00 "}` Var Pro -Produkt err: = json.unmarshal ([] byte (s), & pro) Wenn er == nil { fmt.printf ("% v \ n", pro) } anders { fmt.println (err) fmt.printf ("% v \ n", pro) } }
erwartete Ausgabe:
type Product struct { Name string Price float64 `json:",string"` }
diesen Code erzeugt die erwartete Ausgabe:
{name: galaxy nexus price: 3460} the json float64.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3