
Go에서 마샬링된 sql.NullString의 값만 평면화하고 출력하는 방법은 무엇입니까?
sql.NullString 필드가 있는 Golang 구조체가 있는 경우 기본 마샬링 동작은 다음과 같습니다. 문자열 및 유효한 키가 있는 JSON 개체 내에 필드가 중첩된 출력입니다. NullString 값만 포함하는 평면화된 출력을 얻으려면 다음 단계를 따르세요.
1. 사용자 정의 유형 정의:
sql.NullString을 포함하고 json.Marshaler 인터페이스를 구현하는 사용자 정의 유형을 생성합니다.
1 2 3 | type MyNullString struct {
sql.NullString
}
|
로그인 후 복사
2. MarshalJSON 메서드 구현:
MyNullString 내에서 MarshalJSON 메서드를 구현하여 사용자 지정 JSON 마샬링 동작을 제공합니다.
1 2 3 4 5 6 | func (s MyNullString) MarshalJSON() ([]byte, error) {
if s.Valid {
return json.Marshal(s.String)
}
return []byte(`null`), nil
}
|
로그인 후 복사
3. 구조체 수정:
평탄화가 필요한 구조체의 필드에 사용자 정의 MyNullString 유형을 사용합니다.
1 2 3 4 | type Company struct {
ID int `json: "id" `
Abn MyNullString `json: "abn,string" `
}
|
로그인 후 복사
예:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | package main
import (
"database/sql"
"encoding/json"
"log"
)
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" `
}
func main() {
company := Company{
ID: 68,
Abn: MyNullString{String: "SomeABN" , Valid: true},
}
result, err := json.Marshal(company)
if err != nil {
log.Fatal(err)
}
log.Println(string(result))
}
|
로그인 후 복사
이러한 단계를 수행하면 출력을 효과적으로 평탄화할 수 있습니다. sql.NullString 필드를 검색하고 마샬링된 JSON의 값만 가져옵니다.
위 내용은 Go에서 마샬링된 sql.NullString의 출력을 평면화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!