반응형
encoding/json 패키지를 사용하여 JSON 데이터를 사용할 수 있다.
1. Json 인코딩
Json 포멧으로 변환하기 위해서는 Marshal() 함수를 사용한다.
다음의 예제는 json 데이터를 변환하여 결과를 출력한다.
package main
import (
"encoding/json"
"fmt"
)
// json key 값
type User struct {
// struct 내에 field 선언 후 뒤에 `json:"[key]"` 를 붙이면 key 값을 따로 지정할 수 있다.
Id string `json:"id"`
Pw int `json:"password"`
}
func main() {
// json value 값 지정
userInfo := User{"uhm", 1234}
// JSON 인코딩
byte, err := json.Marshal(userInfo)
if err != nil {
fmt.Println(err)
}
// JSON 바이트를 문자열로 변경
jsonStr := string(byte)
// 결과 출력
fmt.Println(jsonStr) // {"id":"uhm","password":1234}
}
2. Json 디코딩
Json으로 인코딩된 데이터를 다시 디코딩하기 위해서는 Unmarshal()함수를 사용한다.
다음의 예제는 JSON 데이터를 디코딩 하여 결과를 출력합니다.
type User struct {
Id string
pw int
}
func main() {
/*
이런 데이터를 받았다고 가정한다...
{
"id" : "uhm",
"password" : 1234
}
*/
jsonData := User{"uhm", 1234}
// json 인코딩
jsonByte, err := json.Marshal(jsonData)
if err != nil {
fmt.Println(err)
}
// JSON 디코딩
var user User
err = json.Unmarshal(jsonByte, &user)
if err != nil {
fmt.Println(err)
}
fmt.Println("ID: %s", user.Id)
fmt.Println("PW: %d", user.Pw)
}
만약 json 디코딩 시 json 데이에 매칭되는 필드가 struct에 없다면, 그 값은 무시하고 처리된다.
반응형
'Golang' 카테고리의 다른 글
Golang 문자열 다루기 (strconv, strings) (0) | 2022.12.10 |
---|---|
Golang Time (0) | 2022.09.13 |
import 의존성 오류 (0) | 2022.06.29 |
ioutil 패키지를 사용하여 파일 읽기/쓰기 (0) | 2022.04.23 |
Local package import 오류 (0) | 2022.02.21 |
댓글