부울 값을 0과 false(또는 1과 true)로 일관되지 않게 나타내는 서비스의 출력을 매핑하면 역정렬화하는 동안 보다 허용적인 접근 방식을 채택하는 것이 필요해졌습니다. JSON 태그에 문자열을 추가하는 것만으로는 충분하지 않을 수 있지만 대체 솔루션을 사용할 수 있습니다.
해결책은 ConvertibleBoolean과 같은 사용자 정의 유형을 정의하여 모호한 오류를 처리하는 것입니다. 부울 값. 이 유형에는 지정된 규칙에 따라 입력 데이터를 부울 값으로 변환하는 UnmarshalJSON 메서드가 포함되어 있습니다.
type ConvertibleBoolean bool func (bit *ConvertibleBoolean) UnmarshalJSON(data []byte) error { asString := string(data) if asString == "1" || asString == "true" { *bit = true } else if asString == "0" || asString == "false" { *bit = false } else { return errors.New(fmt.Sprintf("Boolean unmarshal error: invalid input %s", asString)) } return nil }
이 사용자 정의 유형은 "1" 및 "0"과 같은 입력 값이 부울 값으로 해석되도록 합니다. , 오류 없이 구문 분석할 수 있습니다.
사용자 정의 UnmarshalJSON 메서드가 올바르게 작동하려면 포인터 메서드 수신기로 구현되어야 합니다. 포인터를 사용하면 기본 값을 수정할 수 있기 때문입니다.
이 접근 방식을 활용하면 JSON 데이터에서 모호한 부울 값을 효과적으로 역마샬링하여 입력 데이터의 불일치에도 불구하고 결과 구조체에 예상 값이 포함되도록 할 수 있습니다. .
위 내용은 JSON을 언마샬링할 때 모호한 부울 값(0/1, true/false)을 어떻게 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!