[go] Go에서 JSON을 사용한 데이터 시리얼라이제이션과 디시리얼라이제이션

소개

Go 언어에서 JSON(JavaScript Object Notation)은 데이터를 시리얼라이즈하고 디시리얼라이즈하는 데 자주 사용됩니다. 이 기술을 사용하면 데이터를 서로 다른 시스템 간에 쉽게 교환하고 저장할 수 있습니다. 이 포스트에서는 Go에서 JSON을 사용하여 데이터를 시리얼라이즈하고 디시리얼라이즈하는 방법에 대해 살펴보겠습니다.

시리얼라이제이션(Serialization)

시리얼라이제이션은 데이터 구조를 바이트 스트림 또는 문자열로 변환하는 프로세스입니다. Go에서는 encoding/json 패키지를 사용하여 데이터를 JSON 형식으로 시리얼라이즈할 수 있습니다.

다음은 Go에서 JSON을 사용하여 데이터를 시리얼라이즈하는 간단한 예제입니다:

package main

import (
	"encoding/json"
	"fmt"
)

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

func main() {
	person := Person{Name: "Alice", Age: 30}
	jsonData, err := json.Marshal(person)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	fmt.Println(string(jsonData))
}

위의 예제에서는 Person 구조체를 정의하고, json.Marshal 함수를 사용하여 person 객체를 JSON으로 시리얼라이즈했습니다.

디시리얼라이제이션(Deserialization)

디시리얼라이제이션은 바이트 스트림 또는 문자열을 데이터 구조로 변환하는 프로세스입니다. Go에서는 encoding/json 패키지를 사용하여 JSON 데이터를 Go 구조체로 디시리얼라이즈할 수 있습니다.

다음은 Go에서 JSON을 사용하여 데이터를 디시리얼라이즈하는 간단한 예제입니다:

package main

import (
	"encoding/json"
	"fmt"
)

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

func main() {
	jsonData := []byte(`{"name":"Bob","age":25}`)
	var person Person
	err := json.Unmarshal(jsonData, &person)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	fmt.Println(person)
}

위의 예제에서는 json.Unmarshal 함수를 사용하여 JSON 데이터를 Person 구조체로 디시리얼라이즈했습니다.

결론

Go에서 JSON을 사용한 데이터 시리얼라이제이션과 디시리얼라이제이션은 간단하고 효과적인 방법입니다. encoding/json 패키지를 사용하면 데이터를 JSON 형식으로 시리얼라이즈하고 디시리얼라이즈하는 과정을 쉽게 수행할 수 있습니다.

Go 공식 문서 및 관련 자료를 참고하여 더 자세한 내용을 학습하시기를 추천합니다.

참고 자료