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

Linda Hamilton
Freigeben: 2024-10-30 17:19:25
Original
680 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!