동적 키를 사용하여 YAML 구문 분석
YAML 파일에서 동적 키를 사용하여 Go 코드를 구문 분석하려면 다음 단계를 따르세요.
1. yaml 라이브러리 설치:
<code class="sh">go get gopkg.in/yaml.v2</code>
2. 모델 구조 정의:
YAML 데이터를 나타내는 구조를 만듭니다. 가능한 키를 모두 알고 있다면 일반 필드를 사용하여 정의할 수 있습니다. 그렇지 않으면 map[string]interface{} 필드를 사용하여 동적 키를 포함할 수 있습니다.
3. 사용자 정의 Unmarshaler 사용(선택 사항):
YAML 데이터 구문 분석 방법을 사용자 정의해야 하는 경우 사용자 정의 Unmarshaler를 사용할 수 있습니다. 이는 동적 키나 기타 복잡한 구문 분석 시나리오를 처리하는 데 도움이 될 수 있습니다.
4. YAML 데이터 구문 분석:
yaml.Unmarshal 함수를 사용하여 YAML 데이터를 구문 분석하고 모델 구조로 역직렬화합니다.
예:
다음 예에서는 동적 키를 사용하여 YAML 파일을 구문 분석하는 방법을 보여줍니다.
<code class="go">package main import ( "fmt" "gopkg.in/yaml.v2" ) var data = ` --- development: skip-header-validation: true V1: current: "1.0.0" mime_types: - application/vnd.company.jk.identity+json; - application/vnd.company.jk.user+json; - application/vnd.company.jk.role+json; - application/vnd.company.jk.scope+json; - application/vnd.company.jk.test+json; skip-mime-type-validation: true skip-version-validation: true V2: current: "2.0.0" mime_types: - application/vnd.company.jk.identity+json; - application/vnd.company.jk.user+json; - application/vnd.company.jk.role+json; - application/vnd.company.jk.scope+json; - application/vnd.company.jk.test+json; ` type MajorVersion struct { Current string `yaml:"current"` MimeTypes []string `yaml:"mime_types"` SkipVersionValidation bool `yaml:"skip-version-validation"` SkipMimeTypeValidation bool `yaml:"skip-mime-type-validation"` } type Environment struct { SkipHeaderValidation bool Versions map[string]MajorVersion `yaml:",inline"` } func main() { e := map[string]Environment{} if err := yaml.Unmarshal([]byte(data), &e); err != nil { fmt.Println(err.Error()) } fmt.Printf("%#v\n", e) }</code>
출력:
map[string]main.Environment{ "development": { SkipHeaderValidation: true, Versions: { "V1": { Current: "1.0.0", MimeTypes: {"application/vnd.company.jk.identity+json;", "application/vnd.company.jk.user+json;", "application/vnd.company.jk.role+json;", "application/vnd.company.jk.scope+json;", "application/vnd.company.jk.test+json;"}, SkipVersionValidation: true, SkipMimeTypeValidation: true, }, "V2": { Current: "2.0.0", MimeTypes: {"application/vnd.company.jk.identity+json;", "application/vnd.company.jk.user+json;", "application/vnd.company.jk.role+json;", "application/vnd.company.jk.scope+json;", "application/vnd.company.jk.test+json;"}, SkipVersionValidation: false, SkipMimeTypeValidation: false, }, }, }, }
위 내용은 Go에서 동적 키를 사용하여 YAML 파일을 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!