Golang JSON Marshalling 中的錯誤處理
JSON 資料結構不能表示循環引用,Go 的 json.Marshal 函數無法處理它們。因此,將循環結構傳遞給 Marshal 會導致無限遞歸和運行時恐慌。
除了循環結構之外,json.Marshal 在遇到不支援的型別或無效值的情況下還可以傳回非 nil 錯誤。
不支援的類型
Marshal 在嘗試時傳回 UnsupportedTypeError封送不支援的資料類型。例如:
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
}
}
不支援的值
當嘗試封送無效值時,Marshal 也可能傳回 UnsupportedValueError。例如:
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
}
}
透過了解這些條件,開發人員可以優雅地處理錯誤並確保 json.Marshal 傳回預期結果或處理適當的錯誤。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3