„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie gehen Sie mit Fehlern beim JSON-Marshalling in Golang um?

Wie gehen Sie mit Fehlern beim JSON-Marshalling in Golang um?

Veröffentlicht am 12.11.2024
Durchsuche:542

How do you Handle Errors During JSON Marshalling in Golang?

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.

Neuestes Tutorial Mehr>

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