Go Struct Json Formatı

Burada json u uzun uzadıya anlatmaya gerek yok. Onu başka bir yazı da ele alacağım. Go da json formatlama işlemlerine ve hele birde bunu struct lar ile yapmamız gerekirse;

Şimdi step step ilerleyelim. Öncelikle User struct ımız var ve bu struct ımızdan bir nesne oluşturuyoruz.

https://play.golang.org/p/uAlSwzv-5x

package main

import "fmt"
import "encoding/json"


type User struct{
    UserName   string
    Email      string
}

func main() {

       user := &User{UserName :"alierbey", Email : "a1@gmail.com"}
       jSonYaz , _ := json.Marshal(user)
       fmt.Println(string(jSonYaz))
     
}

Bu kodun çıktısı;

{"UserName":"alierbey","Email":"a1@gmail.com"}

Şimdi burda sıkıntı olabilecek şey; struct ın özellikleri ne ise direk o isimlerle json oluştu. Yani UserName öğem var ama json çıktı alırken ben onu username veya başka bir şekilde göstermek istersem;

https://play.golang.org/p/SUW1drIjeH

package main

import "fmt"
import "encoding/json"


type User struct{
    
    UserName   string 	`json:"username"`
    Email      string	`json:"email"`	

}


func main() {

       user := &User{UserName :"alierbey", Email : "a1@gmail.com"}
       jSonYaz , _ := json.Marshal(user)
       fmt.Println(string(jSonYaz))
     
}

struct taki öğelerin yanına

`json:"username"`

nasıl görünmesini istiyorsak o şekilde yazıyoruz ve çıktımız;

{"username":"alierbey","email":"a1@gmail.com"}

bu şekilde oluyor.

Şimdi struct içinde eğer bir array imiz varsa işte o zaman da;

https://play.golang.org/p/chBDUu1f5Q

package main

import "fmt"
import "encoding/json"


type User struct{
    
    UserName   string 	`json:"username"`
    Email      []string	`json:"email"`	

}


func main() {

       user := &User{UserName :"alierbey", Email :[]string{"a1@gmail.com","a2@gmail.com"} }
       jSonYaz , _ := json.Marshal(user)
       fmt.Println(string(jSonYaz))
     
}

struct ımızı bu şekilde oluşturduktan sonra

çıktımız;

{"username":"alierbey","email":["a1@gmail.com","a2@gmail.com"]}

bu şekilde oluyor.

alierbey | 17/11/2017

Leave a Reply