go Lang Load kann die Yaml-Datei nicht verarbeiten

王林
Freigeben: 2024-02-09 16:30:19
nach vorne
1277 Leute haben es durchsucht

go Lang load无法处理yaml文件

Der PHP-Editor Zimo hat festgestellt, dass viele Go-Sprachentwickler bei der Verarbeitung von Yaml-Dateien auf Probleme gestoßen sind. Obwohl die Go-Sprache die Ladefunktion zum Laden von Yaml-Dateien bereitstellt, kann diese Funktion das Parsen von Yaml-Dateien nicht korrekt verarbeiten. Dieses Problem hat bei vielen Entwicklern zu Schwierigkeiten bei der Verarbeitung von YAML-Dateien geführt. Wie kann man dieses Problem lösen? In diesem Artikel stellen wir einige Lösungen vor, die Entwicklern helfen, reibungslos mit YAML-Dateien umzugehen.

Frageninhalt

Ich versuche, eine Yaml-Datei zu lesen und in einer Variablen zu speichern, aber aus irgendeinem Grund kann das Array-Objekt in der Yaml-Datei die Datei nicht entmarshalieren. Es werden leere Daten angezeigt.

Das Folgende ist der Inhalt meiner Yaml-Datei

---
version: "1.2"

bunits:
  - name: buname
    bugroupid: asd
    bustgroupid: asd
  - name: buname2
    bugroupid: asd2
    bustgroupid: asd2
Nach dem Login kopieren

Hier ist der verwendete Code

type SResponse struct {
   Version       string         `json:"version"`
   BUnits []BUnit `json:"bUnits"`
}

type BUnit struct {
    Name                      string `json:"name"`
    BuUnitGroupID       string `json:"buGroupID"`
    BuUnitStGroupID string `json:"buStaticGroupID"`
}
func main() {

    _printf := fmt.Printf
    _printf("Start")
    var sListResponse SResponse

    source, err2 := ioutil.ReadFile("squads2.yml")

    if err2 != nil {
        _printf("Couldn't read yaml file.")
}

    err2 = yaml.Unmarshal(source, &sListResponse)
    if err2 != nil {
    _printf("Error")
    }

    _printf("Output: %s\n", sListResponse)
}
Nach dem Login kopieren

Der Code liest den Versionsteil, aber das bunits-Array ist leer. Bitte machen Sie Vorschläge.

Workaround

Dekorieren Sie Ihre Struktur mit einem json-Tag – Sie benötigen dies möglicherweise oder auch nicht (abhängig davon, ob Sie diese Daten später im JSON-Format exportieren/importieren). Aber das Problem, das Sie haben, ist die yaml 导入 - 所以你需要用 yaml 标签来装饰你的 struct-Definition.

Um jsonyaml und yaml Marshalling/Unmarshaling zu unterstützen, aktualisieren Sie einfach Ihre Tags wie folgt:

type SResponse struct {
    Version string  `json:"version" yaml:"version"`
    BUnits  []BUnit `json:"bUnits" yaml:"bUnits"`
}

type BUnit struct {
    Name            string `json:"name" yaml:"name"`
    BuUnitGroupID   string `json:"buGroupID" yaml:"buGroupID"`
    BuUnitStGroupID string `json:"buStaticGroupID" yaml:"buStaticGroupID"`
}
Nach dem Login kopieren

Oder wenn Sie keine JSON-Kodierung/Dekodierung benötigen, entfernen Sie einfach das json-Tag.

Das obige ist der detaillierte Inhalt vongo Lang Load kann die Yaml-Datei nicht verarbeiten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!