JSON 마샬링 중 sql.NullString 출력 평면화
sql.NullString 필드가 포함된 Go 구조체를 마샬링할 때 기본 출력에는 필드의 내용이 포함됩니다. 유효 및 문자열 속성. 값만 포함하는 평면화된 출력을 얻으려면 추가 단계를 수행해야 합니다.
다음 구조체를 고려하세요.
type Company struct { ID int `json:"id"` Abn sql.NullString `json:"abn,string"` }
이 구조체를 json.Marshal로 마샬링하면 다음과 같은 출력이 생성됩니다. :
{ "id": "68", "abn": { "String": "SomeABN", "Valid": true } }
사용자 지정 JSON을 위한 sql.NullString 확장 마샬링
이 출력을 평면화하려면 sql.NullString을 확장하고 json.Marshaler를 구현해야 합니다.
type NullString sql.NullString func (x *NullString) MarshalJSON() ([]byte, error) { if !x.Valid { x.Valid = true x.String = "" //return []byte("null"), nil } return json.Marshal(x.String) }
평면화된 출력을 위한 사용자 정의 유형 정의
다음으로 확장된 NullString을 포함하고 구현하는 사용자 정의 유형을 정의합니다. json.Marshaler.
type MyNullString struct { NullString } func (s MyNullString) MarshalJSON() ([]byte, error) { if s.Valid { return json.Marshal(s.String) } return []byte(`null`), nil } type Company struct { ID int `json:"id"` Abn MyNullString `json:"abn,string"` }
이 사용자 정의 유형을 사용하면 마샬링된 출력은 다음과 같습니다.
{ "id": "68", "abn": "SomeABN" }
위 내용은 Go에서 JSON을 마샬링할 때 sql.NullString 출력을 평면화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!