sql.NullString이 포함된 Go 구조체가 있는 경우 인코딩/json을 사용하여 구조체를 마샬링하면 다음이 생성됩니다. 원하는 평면화 대신 중첩된 객체 value.
type Company struct { ID int `json:"id"` Abn sql.NullString `json:"abn,string"` }
예를 들어 이러한 구조체를 마샬링하면 다음과 같은 출력이 생성됩니다.
{ "id": "68", "abn": { "String": "SomeABN", "Valid": true } }
그러나 원하는 출력은 평면화됩니다.
{ "id": "68", "abn": "SomeABN" }
새 유형을 정의하여 NullString 유형에 대한 MarshalJSON 메서드를 사용자 정의하면 보다 제어된 출력을 위해.
type MyNullString struct { sql.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"` }
json.Marshaler 인터페이스를 구현하면 MyNullString 유형이 JSON으로 표현되는 방식을 제어할 수 있습니다. null이 아닌 경우 기본 문자열을 반환하고, null 값의 경우 리터럴 "null" 문자열을 반환합니다.
코드 플레이그라운드에 제공된 예는 원하는 동작을 보여줍니다.
https://play.golang.org/p/Ak_D6QgIzLb
이 솔루션은 유효한 필드를 무시하고 문자열 값을 직접 반환하여 출력을 평면화합니다.
위 내용은 sql.NullString이 포함된 Go 구조체에서 JSON 출력을 평면화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!