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.