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!