> 백엔드 개발 > Golang > 필드 태그를 사용하여 Go에서 동적 JSON 키를 어떻게 마샬링할 수 있나요?

필드 태그를 사용하여 Go에서 동적 JSON 키를 어떻게 마샬링할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-12-11 07:24:09
원래의
239명이 탐색했습니다.

How Can I Marshal Dynamic JSON Keys in Go Using Field Tags?

Go에서 동적 JSON 필드 태그 마샬링: 과제 극복

Go에서 JSON 데이터를 처리할 때 JSON 문자열을 수동으로 구성하는 것보다 마샬링을 선호하는 경우가 많습니다. 이는 인프라 구성을 표현하는 데 사용되는 Terraform JSON 형식에도 적용됩니다. 그러나 제공된 예에서 임의의 "web1" 이름과 같은 동적 JSON 키를 발견할 때 일반적인 문제가 발생합니다.

제시되는 질문은 다음과 같습니다. Go의 필드 태그를 사용하여 이러한 동적 JSON 키를 처리하는 방법 (예: json:"aws_instance")?

필드 제한 태그

안타깝게도 Go의 필드 태그는 동적 키를 직접 지원하지 않습니다. 제공된 솔루션은 필드 태그를 사용하여 정적 키("resource" 및 "aws_instance")를 나타내려고 시도하지만 동적 키 "web1"을 처리하지 못합니다.

대체 접근 방식

대안으로는 맵을 사용하여 동적 키를 표현함으로써 런타임에 값을 할당할 수 있다고 제안합니다.

type Resource struct {
    AWSInstance map[string]AWSInstance `json:"aws_instance"`
}

type AWSInstance struct {
    AMI string `json:"ami"`
    Count int `json:"count"`
    SourceDestCheck bool `json:"source_dest_check"`
}
로그인 후 복사

여기서 예를 들어, AWSInstance는 동적 이름(예: "web1")으로 키가 지정된 맵이 됩니다. 그런 다음 필요에 따라 맵을 특정 값으로 채울 수 있습니다.

r := Resource{
    AWSInstance: map[string]AWSInstance{
        "web1": AWSInstance{
            AMI:   "qdx",
            Count: 2,
        },
    },
}
로그인 후 복사

맵을 사용하면 동적 JSON 키를 Go에서 쉽게 처리할 수 있으므로 필드 태그가 부족한 시나리오에서 마샬링을 효과적으로 사용할 수 있습니다.

위 내용은 필드 태그를 사용하여 Go에서 동적 JSON 키를 어떻게 마샬링할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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