> 백엔드 개발 > Golang > Go JSON 마샬링에서 SQL NULL 값을 처리하는 방법은 무엇입니까?

Go JSON 마샬링에서 SQL NULL 값을 처리하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-03 01:47:43
원래의
965명이 탐색했습니다.

How to Handle SQL NULL Values in Go JSON Marshalling?

Go에서 SQL NULL 값의 JSON 처리

Go에서 null 허용 SQL 데이터 유형으로 작업할 때 sql.Nullxxx 유형이 자주 사용됩니다. null 값을 허용합니다. 그러나 이로 인해 json 패키지를 사용하여 이러한 구조를 JSON으로 인코딩할 때 형식 문제가 발생할 수 있습니다.

기본적으로 sql.Nullxxx 유형은 구조 특성으로 인해 추가 수준이 있는 개체로 마샬링됩니다. 이로 인해 원하지 않는 JSON 출력이 발생할 수 있습니다. 이 문제를 해결하려면 sql.Nullxxx 유형을 포함하는 사용자 정의 유형에 대해 json.Marshaller 및 json.Unmarshaler 인터페이스를 구현하는 것이 좋습니다.

예를 들어 다음 JsonNullInt64 유형을 사용하여 sql.NullInt64 값을 다음과 같이 인코딩할 수 있습니다. null 또는 정수:

type JsonNullInt64 struct {
    sql.NullInt64
}

func (v JsonNullInt64) MarshalJSON() ([]byte, error) {
    if v.Valid {
        return json.Marshal(v.Int64)
    } else {
        return json.Marshal(nil)
    }
}

func (v *JsonNullInt64) UnmarshalJSON(data []byte) error {
    var x *int64
    if err := json.Unmarshal(data, &x); err != nil {
        return err
    }
    if x != nil {
        v.Valid = true
        v.Int64 = *x
    } else {
        v.Valid = false
    }
    return nil
}
로그인 후 복사

JsonNullInt64 유형인 경우 예상된 방식으로 인코딩되므로 추가 수준 없이 적절한 JSON 표현이 가능합니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿