Das JSON-Format wird ganz gerne verwendet, um Daten oder Einstellungen zu übertragen bzw. zu speichern. Daher stellt sich häufig die Anforderung, JSON-Dateien einzulesen. Dieser Kurzbeitrag zeigt den notwendigen Sourcecode zum Einlesen von JSON-Dateien und dem Mapping auf einen Go Typen.

Das JSON-Format wird ganz gerne verwendet, um Daten oder Einstellungen zu übertragen bzw. zu speichern. Daher stellt sich häufig die Anforderung, JSON-Dateien einzulesen. Dieser Kurzbeitrag zeigt den notwendigen Sourcecode zum Einlesen von JSON-Dateien und dem Mapping auf einen Go Typen.

Gegeben ist eine JSON-Datei mit Einstellungen für eine Anwendung:

{
    "connectionString": "der connection string im detail"
}

Zur Abbildung der Daten im JSON-Format wird ein Type namens Settings erstellt. Dabei ist zu beachten, dass ein JSON-Mapping angegeben werden kann.

type Settings struct {
    DbConnectionString string `json:"connectionString"`
}

Für das Einlesen der Datei wird das Package os benötigt. Für das Serialisieren der JSON-Daten das Package json. Der Vorgang wird in der Funktion ReadSettings durchgeführt, wie nachfolgend zu sehen:

package samplelib

import (
    "encoding/json"
    "os"
)

type Settings struct {
    DbConnectionString string `json:"connectionString"`
}

func ReadSettings(fileName string)  (settings *Settings, err error) {
    file, _ := os.Open(fileName)
    settings = new(Settings)
    err = json.NewDecoder(file).Decode(settings)
    return
}

Nach einem Import kann dies wie folgt aufgerufen werden:

var settings, err = samplelib.ReadSettings("settings.json")

if err != nil {
    fmt.Println("Error while reading configuration:", err.Error)
} else {
    fmt.Println("connection-string:" + settings.DbConnectionString)
}

Für weitere, tiefergehendere Informationen kann ich JSON and Go – The Go Blog empfehlen.

Über den Autor

Norbert Eder

Ich bin ein leidenschaftlicher Softwareentwickler und Fotograf. Mein Wissen und meine Gedanken teile ich nicht nur hier im Blog, sondern auch in Fachartikeln und Büchern.