>  기사  >  백엔드 개발  >  JSON을 언마샬링할 때 모호한 부울 값(0/1, true/false)을 어떻게 처리할 수 있습니까?

JSON을 언마샬링할 때 모호한 부울 값(0/1, true/false)을 어떻게 처리할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-26 22:06:15614검색

How Can I Handle Ambiguous Boolean Values (0/1, true/false) When Unmarshalling JSON?

비정렬화를 사용하여 JSON에서 모호한 부울 값 처리

부울 값을 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.