Golang JSON 마샬링의 오류 처리
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