Heim  >  Artikel  >  Backend-Entwicklung  >  Warum sind meine Go-Strukturfelder beim Parsen von JSON leer?

Warum sind meine Go-Strukturfelder beim Parsen von JSON leer?

Barbara Streisand
Barbara StreisandOriginal
2024-11-12 10:27:02834Durchsuche

Why are my Go struct fields empty when parsing JSON?

JSON in eine Struktur in Go parsen

Beim Versuch, JSON in eine Go-Struktur zu parsen, stoßen Sie auf eine unerwartete Ausgabe: leere Strukturwerte und ein falscher boolescher Wert. Standardmäßig müssen Strukturfelder exportiert werden (mit Großbuchstaben beginnen), damit sie vom Encoder/Decoder erkannt werden. Hier ist eine überarbeitete Version Ihres Codes:

// Define your struct with exported fields
type Settings struct {
    ServerMode bool `json:"serverMode"`
    SourceDir  string `json:"sourceDir"`
    TargetDir  string `json:"targetDir"`
}

func main() {
    // Open the config file
    configFile, err := os.Open("config.json")
    if err != nil {
        printError("opening config file", err.Error())
    }

    jsonParser := json.NewDecoder(configFile)
    settings := Settings{} // Initialize the struct

    // Decode the JSON
    if err = jsonParser.Decode(&settings); err != nil {
        printError("parsing config file", err.Error())
    }

    fmt.Printf("%v %s %s", settings.ServerMode, settings.SourceDir, settings.TargetDir)
}

Mit diesen Änderungen kann der Encoder/Decoder ordnungsgemäß auf die Felder Ihrer Struktur zugreifen und diese ändern, was zu den gewünschten geparsten Werten führt.

Das obige ist der detaillierte Inhalt vonWarum sind meine Go-Strukturfelder beim Parsen von JSON leer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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