在 Go 中使用 json.Marshal 函數時,考慮可能觸發錯誤的輸入資料至關重要。正如官方文件中提到的,不支援循環資料結構,嘗試封送它們會導致無限遞歸,最終導致運行時恐慌。
為了示範非恐慌錯誤條件,讓我們建立一個程式展示了 json.Marshal 可以傳回的兩種類型的錯誤:UnsupportedTypeError 和 UnsupportedValueError。
<code class="go">package main import ( "encoding/json" "fmt" "math" ) func main() { // UnsupportedTypeError: marshalling an invalid type (channel) ch := make(chan int) _, err := json.Marshal(ch) if e, ok := err.(*json.UnsupportedTypeError); ok { // Check for specific error type fmt.Println("UnsupportedTypeError:", e.Type) } else { fmt.Println("Error:", err) } // UnsupportedValueError: marshalling an invalid value (infinity) inf := math.Inf(1) _, err = json.Marshal(inf) if e, ok := err.(*json.UnsupportedValueError); ok { // Check for specific error type fmt.Println("UnsupportedValueError:", e.Value) } else { fmt.Println("Error:", err) } }</code>
輸出:
UnsupportedTypeError: chan int UnsupportedValueError: +Inf
透過提供特定輸入,該程式演示了 json.Marshal 可以傳回非零錯誤而不引起恐慌。這使得開發人員能夠在他們的應用程式中優雅地處理這些錯誤。
以上是如何處理 Go 中的 JSON Marshal 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!