Heim  >  Artikel  >  Backend-Entwicklung  >  go Lang Load kann die Yaml-Datei nicht verarbeiten

go Lang Load kann die Yaml-Datei nicht verarbeiten

王林
王林nach vorne
2024-02-09 16:30:191278Durchsuche

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

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)
}

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"`
}

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen