Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gehen Sie mit Fehlern beim JSON-Marshalling in Golang um?

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

Linda Hamilton
Linda HamiltonOriginal
2024-10-30 17:19:25681Durchsuche

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.

Nicht unterstützte Typen

Marshal gibt einen UnsupportedTypeError zurück, wenn versucht wird, einen nicht unterstützten Datentyp zu Marshallen. Zum Beispiel:

<code class="go">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
    }
}</code>

Nicht unterstützte Werte

Marshal kann auch einen UnsupportedValueError zurückgeben, wenn versucht wird, einen ungültigen Wert zumarshallieren. Zum Beispiel:

<code class="go">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
    }
}</code>

Durch das Verständnis dieser Bedingungen können Entwickler Fehler ordnungsgemäß behandeln und sicherstellen, dass json.Marshal die erwarteten Ergebnisse zurückgibt oder die entsprechenden Fehler behandelt.

Das obige ist der detaillierte Inhalt vonWie gehen Sie mit Fehlern beim JSON-Marshalling in Golang 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