[go] JSON 데이터 유니코드 처리하기

Go에서 JSON 데이터를 다룰 때 유니코드 문자가 포함된 문자열을 올바르게 처리하는 방법에 대해 알아보겠습니다.

1. JSON 데이터를 읽을 때 유니코드 디코딩

package main

import (
	"encoding/json"
	"fmt"
	"log"
)

func main() {
	str := `{"name": "한글", "age": 28}`
	var data map[string]interface{}
	err := json.Unmarshal([]byte(str), &data)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(data["name"])
}

위의 예제에서 str은 JSON 형식의 문자열이며 name 필드에는 “한글”이라는 유니코드 문자열이 포함되어 있습니다. json.Unmarshal 함수를 사용하여 JSON 데이터를 읽을 때 자동으로 유니코드 디코딩이 수행되므로, 출력 결과는 “한글”이 됩니다.

2. JSON 데이터를 쓸 때 유니코드 인코딩

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	data := map[string]interface{}{
		"name": "한글",
		"age": 28,
	}
	res, err := json.Marshal(data)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(string(res))
}

위의 예제에서 data는 유니코드 문자열을 포함하는 맵입니다. json.Marshal 함수를 사용하여 JSON 형식으로 데이터를 쓸 때 자동으로 유니코드 인코딩이 수행되므로, 출력 결과는 name 필드에 “한글”이 포함된 올바른 JSON 문자열이 됩니다.

결론

Go에서 JSON 데이터를 다룰 때 유니코드 문자를 올바르게 처리하기 위해서는 json.Unmarshal 함수를 사용하여 데이터를 읽을 때 자동으로 유니코드 디코딩이 수행되며, json.Marshal 함수를 사용하여 데이터를 쓸 때 자동으로 유니코드 인코딩이 수행됩니다.

이렇게 함으로써, Go 언어로 JSON 데이터를 다룰 때 유니코드 문자열을 올바르게 처리할 수 있습니다.

더 많은 정보는 공식 문서인 Encoding and Decoding JSON in Go를 참조하세요.