"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > गो में डायनामिक कुंजियों के साथ YAML फ़ाइलों को कैसे पार्स करें?

गो में डायनामिक कुंजियों के साथ YAML फ़ाइलों को कैसे पार्स करें?

2024-11-20 को प्रकाशित
ब्राउज़ करें:846

How to Parse YAML Files with Dynamic Keys in Go?

YAML डायनेमिक कुंजियों के साथ गो कोड को पार्स करना

डायनामिक कुंजियों वाली YAML फ़ाइल में गो कोड को पार्स करने के लिए, इन चरणों का पालन करें:

1. yaml लाइब्रेरी स्थापित करें:

go get gopkg.in/yaml.v2

2 प्राप्त करें :
YAML डेटा का प्रतिनिधित्व करने के लिए एक संरचना बनाता है। यदि आप सभी संभावित कुंजियाँ जानते हैं तो आप उन्हें नियमित फ़ील्ड का उपयोग करके परिभाषित कर सकते हैं, अन्यथा आप गतिशील कुंजियाँ शामिल करने के लिए मानचित्र [स्ट्रिंग] इंटरफ़ेस {} फ़ील्ड का उपयोग कर सकते हैं।

3. एक कस्टम अनमर्शलर का उपयोग करें (वैकल्पिक):
यदि आपको YAML डेटा को पार्स करने के तरीके को अनुकूलित करने की आवश्यकता है, तो आप एक कस्टम अनमर्शलर का उपयोग कर सकते हैं। यह आपको गतिशील कुंजियाँ या अन्य जटिल पार्सिंग परिदृश्यों को संभालने में मदद कर सकता है।

4. YAML डेटा को पार्स करें:
YAML डेटा को पार्स करने और इसे एक मॉडल संरचना में डिसेरिएलाइज़ करने के लिए yaml.Unmarshal फ़ंक्शन का उपयोग करें।

उदाहरण:
निम्न उदाहरण दिखाता है कि डायनामिक कुंजियों के साथ एक 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{
    "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,
            },
        },
    },
}
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3