JSON конфиги в Golang

import "encoding/json"

Создадим древовидный JSON файл.

{
   "applications": [
       {
           "name": "app1",
           "db": {
              "host": "db2",
              "user": "root",
              "pass": "",
              "dbname": "test"
           }
       },
       {
           "name": "app2",
           "db": {
              "host": "db2",
              "user": "root",
              "pass": "",
              "dbname": "test"
           }
       }
    ]
}

Опишем структуру. Обращу внимание, что имена свойств нужно писать с большой буквы.

type Config struct {
    Applications []Application
}
type Application struct {
    Name string
    Db   Db
}
type Db struct {
    Host   string
    User   string
    Pass   string
    Dbname string
}

А теперь экспортируем JSON в Го.

file, _ := os.Open("PATHTOYOURFILE")
decoder := json.NewDecoder(file)
config := new(Config)
err := decoder.Decode(&config)
if err != nil {
    // handle it
}

В переменной config у нас будут наши данные. Как теперь получить что-нибудь?

config.Applications[0].Db.Host

Не забываем подключить os package, чтобы прочитать файл, вы можете обойтись без него, если читаете JSON не из файла.