Обработка ошибок в маршаллинге Golang JSON
Структуры данных JSON не могут представлять циклические ссылки, а функция json.Marshal в Go не может их обрабатывать. В результате передача циклических структур в Marshal приводит к бесконечной рекурсии и панике во время выполнения.
Помимо циклических структур, json.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