[go] JSON 파일 읽기 및 쓰기

JSON(JavaScript Object Notation)은 데이터 교환을 목적으로 하는 경량의 데이터 형식입니다. Go 언어에서 JSON 파일을 읽거나 쓰는 방법에 대해 알아보겠습니다.

JSON 파일 읽기

Go에서 JSON 파일을 읽기 위해서는 encoding/json 패키지를 사용합니다. 먼저 JSON 파일을 읽어서 Go 프로그램의 데이터 구조체에 저장해야 합니다. 다음은 JSON 파일을 읽는 간단한 예제입니다.

package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"os"
)

type User struct {
	ID       int    `json:"id"`
	Username string `json:"username"`
	Email    string `json:"email"`
}

func main() {
	file, err := os.Open("users.json")
	if err != nil {
		fmt.Println("파일을 열 수 없습니다.", err)
		return
	}
	defer file.Close()

	data, err := ioutil.ReadAll(file)
	if err != nil {
		fmt.Println("파일을 읽을 수 없습니다.", err)
		return
	}

	var users []User
	err = json.Unmarshal(data, &users)
	if err != nil {
		fmt.Println("JSON 파싱에 실패했습니다.", err)
		return
	}

	fmt.Println(users)
}

위 예제에서는 User 구조체를 정의하고, json.Unmarshal 함수를 사용하여 JSON 파일의 내용을 구조체 슬라이스에 언마샬링합니다.

JSON 파일 쓰기

이번에는 Go에서 JSON 파일을 쓰는 방법을 살펴보겠습니다.

package main

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

type User struct {
	ID       int    `json:"id"`
	Username string `json:"username"`
	Email    string `json:"email"`
}

func main() {
	users := []User{
		{ID: 1, Username: "user1", Email: "user1@example.com"},
		{ID: 2, Username: "user2", Email: "user2@example.com"},
	}

	file, err := os.Create("output.json")
	if err != nil {
		fmt.Println("파일을 생성할 수 없습니다.", err)
		return
	}
	defer file.Close()

	encoder := json.NewEncoder(file)
	err = encoder.Encode(users)
	if err != nil {
		fmt.Println("JSON 파일을 쓸 수 없습니다.", err)
		return
	}

	fmt.Println("JSON 파일이 성공적으로 저장되었습니다.")
}

위 예제에서는 json.NewEncoder를 사용하여 JSON 파일에 데이터를 인코딩하고, encoder.Encode를 이용하여 JSON 파일을 생성합니다.

Go에서 JSON 파일을 읽고 쓰는 방법에 대해 알아보았습니다. JSON 파일을 다룰 때는 에러 핸들링에 주의해야 하며, 일반적으로 ioutilos 패키지를 사용하여 파일을 처리합니다.

더 많은 자세한 내용은 Go 언어 공식 문서를 참고할 수 있습니다.