Загрузка настроек приложения из JSON в Golang

Загрузка настроек приложения из JSON в Golang
При разработке приложений у вас, возможно, появлялось желание вынести некоторые изменяемые значения в отдельный файл настроек, а не задавать их в коде программы. Особенно часто при разработке веб-приложений конфигурационные файлы разделяют на те, что хранят настройки доступа к базе данных, имена серверов, пароли и т.п. — как раз то, что нельзя жёстко задавать в коде программы.

Мы рассмотрим пример открытия файла настроек в формате JSON из приложения на Go с последующей загрузкой этих данных в структуру данных, которую можно будет использовать в дальнейшем.

На самом деле Golang это всё уже умеет «из коробки». Рассмотрим пример структуры данных, которая представляет данные конфигурации:

type Config struct {
Database struct {
Host string `json:"host"`
Password string `json:"password"`
} `json:"database"`
Host string `json:"host"`
Port string `json:"port"`
}

Все поля это структуры, включая вложенные, имеют аннотации JSON. А значит, JSON-эквивалент этой структуры будет таким:

{
"database": {
"host": "localhost",
"password": "12345"
},
"host": "localhost",
"port": "8080"
}

Договоримся, что наши настройки хранятся в файле config.json и мы хотим загрузить их. Вот код для этого:

func LoadConfiguration(file string) Config {
var config Config
configFile, err := os.Open(file)
if err != nil {
fmt.Println(err.Error())
}
jsonParser := json.NewDecoder(configFile)
jsonParser.Decode(&config)
return config
}

Теперь эти настройки можно использовать в нашей программе.

Этот пример очень простой, однако очень полезный при разработке приложений на Go.

Источник: «Load A JSON Configuration From File In A Golang Application»

Загрузка настроек приложения из JSON в Golang

Разработчик: java, kotlin, c#, javascript, dart, 1C, python, php.

Пишите: @ighar. Buy me a coffee, please :).

Leave a Comment

Чтобы не пропустить новые статьи, оставь свой Email

Поздравляем вы подписаны на новости ТехноДжем!

TВо время отправки данных произошла ошибка. Попробуйте ещё раз

Оставляя свою почту