動的キーを含む YAML 解析 Go コード
動的キーを含む YAML ファイル内の Go コードを解析するには、次の手順に従います。 ]
1. yaml をインストールします。ライブラリ:
go get gopkg.in/yaml.v2
2. モデル構造の定義: 表現する構造の作成YAML データ。考えられるキーをすべて知っている場合は、通常のフィールドを使用してそれらを定義できます。そうでない場合は、map[string]interface{} フィールドを使用して動的キーを含めることができます。
3. カスタム Unmarshaler を使用します (オプション): YAML データの解析方法をカスタマイズする必要がある場合は、カスタム Unmarshaler を使用できます。これは、動的キーやその他の複雑な解析シナリオを処理するのに役立ちます。
4. YAML データを解析する: yaml.Unmarshal 関数を使用して、YAML データを解析し、モデル構造に逆シリアル化します。
例:次の例は、動的キーを使用して YAML ファイルを解析する方法を示しています:
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)
}
出力: map[string]main.Environment{
"発達": {
SkipHeaderValidation: true、
バージョン: {
"V1": {
現在: "1.0.0"、
MimeType: {"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": {
現在: "2.0.0"、
MimeType: {"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、
}、
}、
}、
} 免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3