Go에서 Null 필드와 존재하지 않는 JSON 필드 구별
JSON을 Go 구조체로 언마샬링할 때 JSON 필드를 구별하기 어려울 수 있습니다. 명시적으로 null로 설정된 것과 JSON 페이로드에 존재하지 않는 것입니다. 이러한 구별은 데이터의 의미와 해석에 영향을 미치기 때문에 많은 시나리오에서 매우 중요합니다.
Go 1.18 솔루션
일반 Optional 구조체인 Go 1.18부터 시작합니다. 이 문제를 해결하는 데 활용할 수 있습니다.
type Optional[T any] struct { Defined bool Value *T }
이 구조체는 UnmarshalJSON 인터페이스를 사용하면 정의된 값과 정의되지 않은 값을 구별할 수 있습니다. JSON 페이로드를 언마샬링할 때 값이 null인지 또는 유효한 값인지에 관계없이 Optional 구조체의 정의된 필드가 true로 설정됩니다.
사용 예
type Payload struct { Field1 Optional[string] `json:"field1"` Field2 Optional[bool] `json:"field2"` Field3 Optional[int32] `json:"field3"` }
JSON 페이로드를 언마샬링한 후 정의된 필드를 사용하여 특정 필드가 JSON에 있는지 또는 그렇지 않습니다.
Pre-Go 1.18 솔루션
Go 1.18 이전 버전의 경우 사용자 정의 유형을 생성하여 동일한 결과를 얻을 수 있습니다.
type OptionalString struct { Defined bool Value *string }
Go 1.18의 Optional 구조체와 유사하며 이 유형은 UnmarshalJSON을 구현합니다.
사용 예
type Payload struct { SomeField1 string `json:"somefield1"` SomeField2 OptionalString `json:"somefield2"` }
이 사용자 정의 유형을 활용하면 정의된 필드를 검사하여 null과 non-in을 구별할 수 있습니다. 존재하는 필드입니다.
위 내용은 Go에서 Null 필드와 누락된 JSON 필드를 어떻게 구별할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!