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 중국어 웹사이트의 기타 관련 기사를 참조하세요!