쿼카러버의 기술 블로그

[golang] Marshal, Unmarshal 차이 본문

[Golang]

[golang] Marshal, Unmarshal 차이

quokkalover 2021. 8. 9. 19:24

한줄 요약

1. Marshal : golang object (e.g. string, struct) -> []byte, string 로 변환

2. Unmarshal : []byte, string -> golang object(e.g. struct)

 

 

코드 예시

Marshal

1) []string -> string

func main() {

	slcD := []string{"apple", "peach", "pear"}
	slcB, _ := json.Marshal(slcD)
	fmt.Println(string(slcB))

}

2) map -> string

data := make(map[string]interfcae{})

data["name"] = "richet"
data["sex"] = "male"


jsonDoc, _ := json.Marshal(data) // 맵을 JSON 문서로 convert

fmt.Println(string(jsonDoc)) // {"name" : "richet", "sex", "male"} 변환돼서 출력됨.

Unmarshal

1) json string -> map[string]interface{}

var dat map[string]interface{}

byt := []byte(`{"num":6.13,"strs":["a","b"]}`)

	
if err := json.Unmarshal(byt, &dat); err != nil {
    panic(err)
}
fmt.Println(dat)

 

 

2) json string -> custom struct

type Config struct {
	Environment string
	Version     string
	HostName    string
}

func main() {

	jsonDoc := `
        {
            "Environment" : "Dev",
            "Version" : ""
        }`

	conf := &Config{}
	json.Unmarshal([]byte(jsonDoc), conf)
    
}

 

Comments