비정렬화 중에 Null로 설정된 JSON 필드와 존재하지 않는 필드 구별
JSON을 Golang 구조체로 역마샬링할 때 null로 설정된 필드 간 구별 존재하지 않는 필드가 중요할 수 있습니다. 두 시나리오 모두 구조체에 nil 값이 발생하여 의도한 의미를 모호하게 만듭니다.
제네릭을 사용한 차별화(Go 1.18 )
Go 1.18은 제네릭을 도입하여 다음과 같은 간결한 솔루션을 가능하게 합니다. 단일 일반 유형:
type Optional[T any] struct { Defined bool Value *T }
이것은 type은 정의된 필드 상태(정의)를 사용하여 선택적 값의 개념을 캡슐화합니다.
사용 예:
type Payload struct { Field1 Optional[string] `json:"field1"` Field2 Optional[int] `json:"field2"` }
정렬 해제 후 정의된 값(정의)이 있는 필드 == true)는 null 값(Value == nil)과 누락된 값(Defined ==)을 구별할 수 있습니다. false).
사전 제네릭 솔루션
사용자 정의 유형 래퍼:
type OptionalString struct { Defined bool Value *string } func (os *OptionalString) UnmarshalJSON(data []byte) error { os.Defined = true return json.Unmarshal(data, &os.Value) }
예 사용법:
type Payload struct { Field1 string `json:"field1"` Field2 OptionalString `json:"field2"` }
제한 사항:
위 내용은 Go에서 역정렬화할 때 JSON Null과 누락된 필드를 어떻게 구별할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!