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

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

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

How to Parse a YAML File with Nested Key-Value Pairs in Go?

गो में एक YAML फ़ाइल को पार्स करना

गो में YAML फ़ाइलों को पार्स करने में gopkg.in/yaml.v2 के माध्यम से उपलब्ध YAML लाइब्रेरी का उपयोग करना शामिल है। प्रदान किया गया कोड नेस्टेड कुंजी-मूल्य जोड़े के साथ एक YAML फ़ाइल को पार्स करने के लिए डिज़ाइन किया गया है, जैसे कि:

firewall_network_rules:
  rule1:
    src:       blablabla-host
    dst:       blabla-hostname

हालाँकि, मूल्यों के साथ कुंजी-मूल्य जोड़े को पार्स करने का प्रयास करते समय समस्याएँ उत्पन्न होती हैं। कार्यान्वित संरचना इन मानों को परिभाषित नहीं करती है, जिससे पार्सिंग के दौरान त्रुटि होती है।

इस समस्या के समाधान के लिए, वास्तविक दुनिया के YAML उदाहरण को शामिल करने पर विचार करें, जैसे कि Google क्लाउड या कुबेरनेट्स से एक service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: myName
  namespace: default
  labels:
    router.deis.io/routable: "true"
  annotations:
    router.deis.io/domains: ""
spec:
  type: NodePort
  selector:
    app: myName
  ports:
    - name: http
      port: 80
      targetPort: 80
    - name: https
      port: 443
      targetPort: 443

यह उदाहरण नेस्टेड कुंजी-मूल्य संबंधों को प्रदर्शित करता है और एक व्यावहारिक उपयोग का मामला प्रदान करता है। संबंधित गो संरचना इस प्रकार होगी:

type Service struct {
    APIVersion string `yaml:"apiVersion"`
    Kind       string `yaml:"kind"`
    Metadata   struct {
        Name      string `yaml:"name"`
        Namespace string `yaml:"namespace"`
        Labels    struct {
            RouterDeisIoRoutable string `yaml:"router.deis.io/routable"`
        } `yaml:"labels"`
        Annotations struct {
            RouterDeisIoDomains string `yaml:"router.deis.io/domains"`
        } `yaml:"annotations"`
    }
    Spec struct {
        Type     string `yaml:"type"`
        Selector struct {
            App string `yaml:"app"`
        }
        Ports []struct {
            Name       string `yaml:"name"`
            Port       int    `yaml:"port"`
            TargetPort int    `yaml:"targetPort"`
            NodePort   int    `yaml:"nodePort,omitempty"`
        } `yaml:"ports"`
    }
}

प्रक्रिया को सरल बनाने के लिए, yaml-to-go और json-to-go जैसी सेवाएं YAML को Go structs में परिवर्तित करने के लिए सुविधाजनक उपकरण प्रदान करती हैं, जिससे पार्सिंग कार्य अधिक प्रबंधनीय हो जाता है।

अंत में, अपनी संरचना में YAML फ़ाइल को अनमर्शल करने के लिए, आप निम्नलिखित कोड का उपयोग कर सकते हैं:

var service Service

err := yaml.Unmarshal(yourFile, &service)
if err != nil {
    panic(err)
}

यह दृष्टिकोण सेवा संरचना के माध्यम से पार्स किए गए डेटा तक पहुंच सक्षम बनाता है, जिससे आप अपने गो एप्लिकेशन में YAML फ़ाइल की जानकारी के साथ बातचीत कर सकते हैं।

नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3