📘 Go 언어 16강 - JSON 처리와 구조체 매핑
이번 강의에서는 encoding/json 패키지를 사용해 JSON 데이터 ↔ 구조체 변환을 다룹니다.
Go는 JSON 처리에 매우 강력한 기능을 기본으로 제공합니다.
1️⃣ 구조체를 JSON으로 변환 (Marshal)
type User struct {
Name string `json:"name"`
Email string `json:"email"`
}
func main() {
u := User{"Alice", "alice@example.com"}
jsonBytes, _ := json.Marshal(u)
fmt.Println(string(jsonBytes))
}
2️⃣ JSON 문자열을 구조체로 변환 (Unmarshal)
data := []byte(`{"name":"Bob", "email":"bob@example.com"}`)
var u User
json.Unmarshal(data, &u)
fmt.Println(u.Name, u.Email)
3️⃣ 필드 태그 지정
구조체 필드에 json:"key"
태그를 붙이면 JSON 키와 구조체 필드명을 매핑할 수 있어요.
💡 예제 1: 슬라이스 JSON으로
users := []User{
{"Tom", "tom@mail.com"},
{"Jane", "jane@mail.com"},
}
bytes, _ := json.Marshal(users)
fmt.Println(string(bytes))
💡 예제 2: JSON 배열을 슬라이스로 파싱
jsonStr := `[
{"name": "Tom", "email": "tom@mail.com"},
{"name": "Jane", "email": "jane@mail.com"}
]`
var users []User
json.Unmarshal([]byte(jsonStr), &users)
fmt.Println(users[0].Name)
🧠 요약
json.Marshal()
: 구조체 → JSON 문자열json.Unmarshal()
: JSON 문자열 → 구조체- 태그
`json:"필드명"`
으로 키 이름을 매핑 - 슬라이스, 맵 등도 자유롭게 처리 가능
한 줄 요약: "Go는 json 태그만 잘 써도 구조체 ↔ JSON 매핑이 매우 강력하다!"