Fehlerbehandlung beim Golang JSON Marshalling
JSON-Datenstrukturen können keine zyklischen Referenzen darstellen, und die json.Marshal-Funktion von Go kann sie nicht verarbeiten. Infolgedessen führt die Übergabe zyklischer Strukturen an Marshal zu einer unendlichen Rekursion und einer Laufzeitpanik.
Über zyklische Strukturen hinaus kann json.Marshal in Situationen, in denen es auf nicht unterstützte Typen oder ungültige Werte stößt, auch Fehler ungleich Null zurückgeben.
Unsupported Types
Marshal gibt einen UnsupportedTypeError zurück beim Versuch, einen nicht unterstützten Datentyp zu Marshallen. Zum Beispiel:
import "encoding/json"
func main() {
ch := make(chan int)
_, err := json.Marshal(ch)
if _, ok := err.(*json.UnsupportedTypeError); ok {
// Error: Unmarshal: unsupported type: chan int
}
}
Unsupported Values
Marshal kann auch einen UnsupportedValueError zurückgeben, wenn versucht wird, einen ungültigen Wert zu marshallen. Zum Beispiel:
import (
"encoding/json"
"math"
)
func main() {
positiveInfinity := math.Inf(1)
_, err := json.Marshal(positiveInfinity)
if _, ok := err.(*json.UnsupportedValueError); ok {
// Error: json: unsupported value: Inf
}
}
Durch das Verständnis dieser Bedingungen können Entwickler Fehler elegant behandeln und sicherstellen, dass json.Marshal die erwarteten Ergebnisse zurückgibt oder die entsprechenden Fehler behandelt.
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