[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 데이터의 압축 및 해제는 데이터 전송 및 저장을 위해 유용한 기술입니다.