[go] JSON 데이터 압축과 해제
Go 언어를 사용하여 JSON 데이터를 압축하고 해제하는 방법에 대해 알아보겠습니다.
JSON 데이터 압축하기
JSON 데이터를 압축하려면 encoding/json
패키지와 bytes
패키지를 사용하여 JSON 데이터를 바이트 배열로 변환한 다음, 해당 데이터를 압축할 수 있는 알고리즘을 적용합니다.
다음은 JSON 데이터를 압축하는 예제 코드입니다.
package main
import (
"bytes"
"compress/gzip"
"encoding/json"
"fmt"
"log"
)
func main() {
// 샘플 JSON 데이터
data := map[string]interface{}{
"key1": "value1",
"key2": "value2",
}
// JSON 데이터를 바이트 배열로 변환
jsonData, err := json.Marshal(data)
if err != nil {
log.Fatal(err)
}
// JSON 데이터를 Gzip으로 압축
var buf bytes.Buffer
gz := gzip.NewWriter(&buf)
if _, err := gz.Write(jsonData); err != nil {
log.Fatal(err)
}
if err := gz.Close(); err != nil {
log.Fatal(err)
}
// 압축된 데이터 출력
fmt.Println(buf.Bytes())
}
JSON 데이터 해제하기
JSON 데이터를 압축 해제하려면 gzip
패키지와 encoding/json
패키지를 사용하여 해당 데이터를 해제한 다음, JSON 데이터로 다시 변환합니다.
다음은 JSON 데이터를 해제하는 예제 코드입니다.
package main
import (
"bytes"
"compress/gzip"
"encoding/json"
"fmt"
"log"
)
func main() {
// 압축된 JSON 데이터
compressedData := []byte{
31, 139, 8, 0, 0, 0, 0, 0, 0, 255, 70, 142, 77, 206, 74, 77,
45, 81, 40, 73, 45, 72, 78, 50, 207, 47, 202, 204, 77, 82, 147,
204, 42, 79, 84, 85, 170, 72, 76, 81, 41, 74, 77, 206, 74, 77, 206, 74,
}
// 압축 해제
reader := bytes.NewReader(compressedData)
gz, err := gzip.NewReader(reader)
if err != nil {
log.Fatal(err)
}
var uncompressed bytes.Buffer
_, err = uncompressed.ReadFrom(gz)
if err != nil {
log.Fatal(err)
}
// JSON 데이터로 변환
var result map[string]interface{}
err = json.Unmarshal(uncompressed.Bytes(), &result)
if err != nil {
log.Fatal(err)
}
// 해제된 JSON 데이터 출력
fmt.Println(result)
}
위의 예제 코드에서는 compress/gzip
패키지를 사용하여 JSON 데이터를 압축하고 해제하는 방법을 보여주고 있습니다.
이제 Go 언어를 사용하여 JSON 데이터를 압축하고 해제하는 방법을 이해했습니다. JSON 데이터의 압축 및 해제는 데이터 전송 및 저장을 위해 유용한 기술입니다.