쿼카러버의 기술 블로그
[golang] Marshal, Unmarshal 차이 본문
한줄 요약
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)
}
'[Golang]' 카테고리의 다른 글
[golang] Type assertion과 Type conversion 차이 (0) | 2021.09.24 |
---|---|
[golang] time.After이란? (memory leak 가능성) (0) | 2021.08.30 |
[golang] string pointer는 언제쓸까? (0) | 2021.08.09 |
[golang] Closure(클로저)란? (0) | 2021.08.02 |
[golang] 콘텍스트 (context)란? - 1탄 간략한 소개 (4) | 2021.08.01 |
Comments