2018년 4월 17일 화요일

.JSON 설정파일 읽어오기

.JSON 설정파일 읽어오기

.JSON 설정파일 읽어오기

github에 코드를 작성하는데 db의 중요한 설정값을 공개할 수는 없기 때문에 설정파일만 따로 보관해야 한다. 자금이 있어서 private github 서비스를 사용할 수도 없는 입장이고, 개인 개발자의 한계.

GO RESTFUL 서브를 만드려고 하는데 설정 파일을 json으로 저장하고, 이를 필요할 때 불러오는 코드를 작성하려고 한다.

go-mssqldb 패키지를 사용해서 microsoft sql server에 접속을 해서 이를 쏴주는 기능을 사용하려고 한다.

우선 저는 아래와 같은 구조를 갖는 setting.json 을 만드려고 합니다.

setting.json

{
    "database": "sqlserver",
    "user":{
        "id":"admin",
        "pwd":"123456789a!"
    },
    "host":{
        "address": "222.111.111.111",
        "port": 1433
    }
}

이제 이를 golang 에 맞는 type struct를 만듭니다.

type config struct

type MssqlConnect struct {
 Database string `json:"database"`
 User struct {
  ID  string `json:"id"`
  Pwd string `json:"pwd"`
 } `json:"user"`
 Host struct {
  Address string `json:"address"`
  Port    int    `json:"port"`
 } `json:"host"`
}

Load Config

다음은 config.json 파일을 읽어오는 과정입니다.

func LoadConfig() (string, error){
 var config MssqlConfig
 file, err := os.Open("setting.json")
 defer file.Close()
 if err != nil {
  Log.Fatal(err)
 }
 decoder := json.NewDecoder(file)
 err = decoder.Decode(&config)
 if err != nil {
  Log.Fatal(err)
 }
 return config, err
}

func main

아래와 같이 사용하면 됩니다.

func main() {
  config, err := LoadConfig()
  fmt.Println(config.Database) // sqlserver
  fmt.Println(config.User.ID) // admin
}