Go Json parametre dosyası nasıl okunur?

Selamlar,

Yaptığım küçük çalışmalardan birinde Json üzerinden bazı parametreleri, özellikle DB parametrelerini, nasıl okunacağı ile ilgili araştırma yaparken buldum. Bulduklarımı sizlerle paylaşmak isterim.

Parametre dosyamız aşağıdaki gibi olsun;
[code lang=”javascript”]
{
“user”: “ottocc_user”,
“password”: “123”,
“host”: “localhost”,
“dbname”: “ottocc”
}
[/code]

Bu parametre dosyasını go üzerinden okumak için (go versiyonu: 1.5.2) standart kütüphaneler yeterli olacaktır. Daha detaylı bilgi için; http://blog.golang.org/json-and-go.

  • Öncelikle parametre dosyasını ifade edecek bir struct a ihtiyacımız var. Örnek aÅŸağıdaki gibi;
    [code lang=”go”]
    type JsonConfType struct {
    User string
    Password string
    Host string
    DbName string
    }
    [/code]
  • Daha sonra bu parametre dosyasının disk üzerinden baÅŸarı ile okunması gerekiyor.
    [code lang=”go”]
    fileArr, err := ioutil.ReadFile(fileName)
    if err != nil {
    log.Fatalln("[conf.Load] Error at file read, ", err)
    return nil
    }
    [/code]
  • Bu aÅŸamadan sonra *struct* bilgisi için hafızadan yer ayrılır.
    [code lang=”go”]
    JsonConf = new(JsonConfType)
    [/code]
  • Son olarak ise disk üzerinden okuduÄŸumuz verileri oluÅŸturduÄŸumuz ve hafızada yer ayırdığımız struct a yerleÅŸtirmemiz gerekiyor. Bu iÅŸlem için aÅŸağıdaki Unmarshal iÅŸlemi yeterli olacaktır;
    [code lang=”go”]
    err = json.Unmarshal(fileArr, &conf.JsonConf)
    if err != nil {
    log.Fatalf("[conf.Load] error at unmarshall conf", err)
    return nil
    }
    [/code]

Tüm bu işlemler sonrasında hafızada yer oluşturduğumuz struct ı aşağıdaki gibi kullanabiliriz;
[code lang=”go”]
fmt.Printf("user=%s password=%s host=%s dbname=%s sslmode=disable", conf.JsonConf.User, conf.JsonConf.Password, conf.JsonConf.Host, conf.JsonConf.DbName)
[/code]

Püf noktaları;
1. Disk üzerinden okuma iÅŸlemi oldukça pahalı olduÄŸu için parametre dosyasını struct’a bir kez taşımaya çalışın.
2. Unmarshal işleminden sonra parametreleri çalışma zamanında değiştirip marshal ile parametre dosyasına geri yazabilirsiniz. Programınız tekrar çalıştığında değişen parametreleri okuyup, tekrar açılma sonrasında program kaldığı yerden çalışmaya devam edebilir.

Kolay gelsin.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir