Go 언어 16강 - JSON 처리와 구조체 매핑

 

📘 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 매핑이 매우 강력하다!"