Golang -Marshal, NewDecoder 차이

Lumi·2022년 2월 23일
0

Golang

목록 보기
37/38
post-thumbnail

🔥 개요

저번에 패키지를 정리하면서 이 두개의 패키지에서의 차이점이 궁금하여 정리를 하게 되었습니다.

🔨 NewDecoder

JSON문자열을 Go 밸류로 바꾸는 것을 디코딩 이라고 합니다.

  • json.Decoder가 이런 경우에 사용을 하게 됩니다.

일단 json.NewDecoder함수로 디코더를 만들게 되고 이후 json.Decode를 통해 JSON문자열을 Go 밸류로 변경하게 됩니다.

이와 반대로 인코딩은 NewEncoding함수로 인코더를 만들고 이후 json.Encode를 통해서 인코딩 하게 됩니다.

  • 인코딩은 주로 다시 JSON문자열로 출력할떄 사용합니다.

이 패키지를 만드는 함수 json.NewDecoder에 들어가는 인자는 io.Writer 타입을 받게 됩니다.

🔨 Marshal

둘은 모두 타입을 변환한다는 점에서 동일하지만 Marshal은 JSON으로 변환하는 것이 아니라 바이트 슬라이스로 변환을 합니다.

보통 Post요청을 통해 들어오면 ioutil.ReadAll(r.Body)를 통해서 바이트 슬라이스로 변경을 한뒤에 사용을 합니다.

data := ioutil.ReadAll(r.Body)`

json.Unmarshal([]byte(data), 변수(포인터값))
  • Unmarshal은 바이트 슬라이스나, 문자열을 논리적 자료구조로 변경하는 것을 말합니다.

🔥 Youtube

profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글