>  기사  >  백엔드 개발  >  Go에서 대소문자 구분 JSON 역마샬링을 달성하는 방법은 무엇입니까?

Go에서 대소문자 구분 JSON 역마샬링을 달성하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-10 01:27:02345검색

How to Achieve Case-Sensitive JSON Unmarshaling in Go?

대소문자 구분 JSON 역마샬링 처리

JSON을 활용하는 경우 역마샬링 프로세스 중에 대소문자 구분 처리가 필요한 상황이 발생할 수 있습니다. 그러나 Go의 표준 JSON 라이브러리는 대소문자를 구분하지 않는 일치에 우선 순위를 두므로 예기치 않은 동작이 발생할 수 있습니다.

대소문자를 구분하지 않는 일치 동작

공식 문서에 따르면 역마샬링 중에 들어오는 JSON 키는 다음과 같습니다. 구조체 필드 이름이나 태그와 비교됩니다. 라이브러리는 정확한 일치를 선호하지만 대소문자를 구분하지 않는 것도 허용합니다. 예를 들어 "e" 및 "E"와 같은 키가 포함된 JSON을 수신하고 "e" 변형만 역마샬링하려는 경우 충돌이 발생할 수 있습니다.

대소문자 구분 역마샬링 부족

안타깝게도 표준 JSON 라이브러리는 현재 대소문자를 구분하지 않는 역마샬링을 비활성화하는 간단한 메커니즘을 제공하지 않습니다. https://golang.org/pkg/encoding/json/#Unmarshal의 문서에는 다음과 같이 명시되어 있습니다.

"Unmarshal은 들어오는 객체 키를 Marshal에서 사용하는 키(구조체 필드 이름 또는 해당 태그)와 일치시킵니다. , 정확한 일치를 선호하지만 대소문자를 구분하지 않는 일치도 허용합니다."

대체 솔루션

표준 라이브러리는 기본 솔루션을 제공하지 않으므로 가능한 해결 방법 중 하나 인코딩/json 패키지를 확장하여 사용자 정의 JSON 디코더를 만드는 것입니다. 이 디코더는 대소문자가 다른 태그를 무시하는 필드 수준 대소문자 구분 역마샬링 메커니즘을 구현할 수 있습니다.

위 내용은 Go에서 대소문자 구분 JSON 역마샬링을 달성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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