Golang JSON 編組中的錯誤處理
JSON 資料結構無法表示循環引用,Go 的 json.Marshal 函數無法處理它們。因此,將循環結構傳遞給 Marshal 會導致無限遞歸和運行時恐慌。
除了循環結構之外,json.Marshal 在遇到不支援的型別或無效值的情況下還可以傳回非 nil 錯誤。
不支援的類型
當嘗試封送不支援的資料類型時,Marshal 傳回 UnsupportedTypeError。例如:
<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>
不支援的值
在嘗試封送無效值時,Marshal 也可能傳回 UnsupportedValueError。例如:
<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>
透過了解這些條件,開發人員可以優雅地處理錯誤並確保 json.Marshal 回傳預期結果或處理適當的錯誤。
以上是在 Golang 中如何處理 JSON 編組期間的錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!