>백엔드 개발 >Golang >Go에서 유형 키를 사용하여 동적 JSON 구조를 역마샬링하는 방법은 무엇입니까?

Go에서 유형 키를 사용하여 동적 JSON 구조를 역마샬링하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-06 00:26:12285검색

How to Unmarshal Dynamic JSON Structures with Type Keys in Go?

유형 키를 사용하여 동적 JSON 구조 역마샬링

JSON 문서에 동적으로 유형이 지정된 필드가 있는 이기종 구조가 포함되어 있는 상황에서는 Go 구조체로 효율적으로 역마샬링하기 위한 전략입니다. 일반적인 요구 사항은 변형 필드의 자리 표시자로 추가 일반 필드를 도입하지 않고 JSON 문서를 구조체로 역정렬화하는 것입니다.

이를 달성하기 위한 한 가지 접근 방식은 변형 필드 간의 공통 속성을 나타내는 인터페이스를 만드는 것입니다. 이 경우 GetType() 메서드가 있는 Something 인터페이스를 정의할 수 있습니다. 또한 DynamicTypeA 및 DynamicTypeB와 같은 다양한 속성을 가진 다양한 유형의 동적 필드를 지원하기 위해 여러 구조체와 함수를 구성할 수 있습니다.

다음 단계에서는 BigStruct 유형에 대한 json.Unmarshaler를 구현합니다. 이 사용자 정의 역마샬링 메서드는 Dynamic_field JSON 개체 내의 Type 필드를 검사하고 DynamicField 필드의 유형을 동적으로 결정할 수 있습니다. 예를 들어 Type 필드가 "A"인 경우 DynamicField 필드는 DynamicTypeA의 인스턴스로 설정되어야 합니다. 이를 통해 JSON 구조를 기반으로 런타임 유형을 선택할 수 있습니다.

DynamicField의 유형을 변경할 수 없는 경우 대체 접근 방식은 BigStruct 유형에 UnmarshalJSON 메서드를 구현하고 임시 유형을 선언하여 재귀를 방지하는 것입니다. . 이 임시 유형은 역마샬링 프로세스의 중개자 역할을 하여 무한 재귀를 방지합니다.

이러한 기술을 수용하면 동적 JSON 구조를 Go 구조체로 효과적으로 역마샬링하여 변형 필드 유형을 유연하게 처리하고 조작할 수 있습니다. .

위 내용은 Go에서 유형 키를 사용하여 동적 JSON 구조를 역마샬링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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