[go] Go에서 JSON 데이터 유형 변환하기

Go 언어는 JSON 데이터를 다루는 것이 상당히 쉽습니다. 여러분의 프로그램에서 JSON 데이터를 파싱하고 가공하는 과정이 간단하고 편리합니다. 하지만 때로는 JSON 데이터의 특정 유형을 다른 유형으로 변환해야 할 수도 있습니다. 예를 들어, 문자열로 표현된 숫자를 숫자 데이터 유형으로 변환하거나, JSON 데이터의 특정 필드를 사용자 정의한 구조체로 매핑해야 할 수 있습니다.

이번 글에서는 Go 언어에서 JSON 데이터를 특정 유형으로 변환하는 방법에 대해 알아보겠습니다.

1. JSON 데이터 파싱하기

먼저, JSON 데이터를 파싱하여 Go에서 사용하기 쉬운 형태로 가져와야 합니다. 이를 위해 Go의 encoding/json 패키지를 사용할 수 있습니다. 아래의 예제 코드는 json.Unmarshal을 사용하여 JSON 데이터를 Go의 map 형식으로 파싱하는 방법을 보여줍니다.

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	jsonData := []byte(`{"name":"John","age":30,"city":"New York"}`)
	
	var data map[string]interface{}
	err := json.Unmarshal(jsonData, &data)
	if err != nil {
		fmt.Println("Error parsing JSON:", err)
		return
	}

	fmt.Println(data)
}

2. JSON 데이터 유형 변환하기

이제 JSON 데이터를 파싱했으니, 필요에 따라 데이터의 유형을 변환할 수 있습니다. 예를 들어, JSON 데이터의 특정 필드가 문자열인데 이를 숫자로 변환하고 싶을 때 등의 경우입니다. 아래의 예제 코드는 이를 수행하는 방법을 보여줍니다.

ageStr := data["age"].(string)
age, err := strconv.Atoi(ageStr)
if err != nil {
    fmt.Println("Error converting age to integer:", err)
    return
}

fmt.Println("Age:", age)

3. JSON 데이터 필드 매핑하기

때로는 JSON 데이터의 특정 필드를 사용자 정의한 구조체로 매핑해야 할 수도 있습니다. 아래의 예제 코드는 JSON 데이터를 Go 구조체로 매핑하는 방법을 보여줍니다.

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
    City string `json:"city"`
}

var personData Person
err = json.Unmarshal(jsonData, &personData)
if err != nil {
    fmt.Println("Error parsing JSON into struct:", err)
    return
}

fmt.Println("Person:", personData)

결론

Go 언어는 JSON 데이터를 다루는 데 매우 유용한 기능을 제공합니다. 이를 활용하여 JSON 데이터를 파싱하고 필요에 따라 다른 데이터 유형으로 변환하거나 구조체로 매핑하는 등의 작업을 손쉽게 수행할 수 있습니다. JSON 데이터를 다루는 과정에서 발생하는 각종 상황에 유연하게 대처할 수 있는 능력은 Go로 개발한 프로그램을 효과적으로 만드는 데 도움이 될 것입니다.

참고 문헌: Go 언어 공식 문서

이상으로 Go에서 JSON 데이터 유형 변환하기에 대해 알아보았습니다. 부디 여러분의 프로그램 개발에 도움이 되길 바랍니다. 감사합니다.