소개
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 공식 문서 및 관련 자료를 참고하여 더 자세한 내용을 학습하시기를 추천합니다.
참고 자료
- Go 공식 문서 - encoding/json
- A comprehensive guide to working with JSON in Go
- Effective JSON Schema Validation in Go