>  기사  >  백엔드 개발  >  Go에서 JSON 마샬 오류를 처리하는 방법은 무엇입니까?

Go에서 JSON 마샬 오류를 처리하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-01 08:34:30436검색

How to Handle JSON Marshal Errors in Go?

Go에서 JSON Marshal 오류 처리

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이 반환할 수 있음을 보여줍니다. 패닉을 일으키지 않고 non-nil 오류가 발생합니다. 이를 통해 개발자는 애플리케이션에서 이러한 오류를 적절하게 처리할 수 있습니다.

위 내용은 Go에서 JSON 마샬 오류를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.