> 백엔드 개발 > Golang > Go에서 JSON의 유연한 부울 값(0/1 및 true/false)을 어떻게 비정렬화할 수 있나요?

Go에서 JSON의 유연한 부울 값(0/1 및 true/false)을 어떻게 비정렬화할 수 있나요?

Linda Hamilton
풀어 주다: 2024-12-04 17:42:12
원래의
640명이 탐색했습니다.

How Can I Unmarshal Flexible Boolean Values (0/1 and true/false) from JSON in Go?

유연한 부울 값의 JSON 역마샬링

부울 값을 0/1과 false/true로 일관되지 않게 나타내는 JSON 데이터 소스를 처리하는 경우 , 표준 인코딩/json 패키지는 구문 분석에 충분한 유연성을 제공하지 못할 수 있습니다. 이 문제를 해결하기 위해 사용자 정의 UnmarshalJSON 메서드를 구현하여 허용되는 부울 형식을 확장할 수 있습니다.

제공된 예제에서는 AsBoolean 및 AlsoBoolean이라는 두 개의 부울 필드가 있는 MyType이라는 구조체를 정의합니다. 해당 JSON 입력에는 해당 필드에 대한 "true" 및 "1" 값이 포함되어 있습니다.

0과 false를 모두 부울로 역정렬화하려면 새로운 유형의 ConvertibleBoolean을 생성하고 해당 UnmarshalJSON 메서드를 구현합니다. 메서드 내에서 입력 데이터를 문자열로 검사하고 다음 조건에 따라 해당 부울 값을 결정합니다.

  • 문자열이 "1" 또는 "true"이면 부울 값을 설정합니다.
  • 문자열이 "0" 또는 "false"인 경우 부울 값을 false로 설정합니다.
  • 기타 입력 결과는 설명 메시지와 함께 오류가 발생합니다.

UnmarshalJSON 메서드를 사용자 정의하면 기본 JSON 역마샬링 동작을 확장하고 입력 JSON 데이터에 비표준 부울 표현을 수용할 수 있습니다. 이 접근 방식을 사용하면 JSON 입력을 예상 부울 값으로 역마샬링하고 그에 따라 MyType 구조체를 채울 수 있습니다.

위 내용은 Go에서 JSON의 유연한 부울 값(0/1 및 true/false)을 어떻게 비정렬화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿