[go] Go에서 JSON 데이터 필터링 및 검색하기

Go 언어를 사용하여 JSON 데이터를 필터링하고 검색하는 방법에 대해 알아보겠습니다.

1. JSON 데이터 읽기

우선 Go에서 JSON 파일을 읽는 방법을 살펴보겠습니다. encoding/json 패키지를 사용하여 JSON 파일을 읽고, 데이터를 구조체로 파싱할 수 있습니다.

package main

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

type Data struct {
	Users []struct {
		ID   int    `json:"id"`
		Name string `json:"name"`
		Age  int    `json:"age"`
	} `json:"users"`
}

func main() {
	file, err := os.Open("data.json")
	if err != nil {
		fmt.Println("Error opening JSON file:", err)
		return
	}
	defer file.Close()

	var data Data
	err = json.NewDecoder(file).Decode(&data)
	if err != nil {
		fmt.Println("Error decoding JSON:", err)
		return
	}

	fmt.Printf("%+v\n", data)
}

2. JSON 데이터 필터링 및 검색

이제 Go로 읽어온 JSON 데이터를 필터링하고 검색하는 방법을 알아보겠습니다. 예를 들어, 이름이 “Alice”인 사용자를 찾는다고 가정해봅시다.

func filterByName(users []struct {
	ID   int    `json:"id"`
	Name string `json:"name"`
	Age  int    `json:"age"`
}, name string) []struct {
	ID   int    `json:"id"`
	Name string `json:"name"`
	Age  int    `json:"age"`
} {
	var filteredUsers []struct {
		ID   int    `json:"id"`
		Name string `json:"name"`
		Age  int    `json:"age"`
	}
	for _, user := range users {
		if user.Name == name {
			filteredUsers = append(filteredUsers, user)
		}
	}
	return filteredUsers
}

func main() {
	// ... (이전 섹션에서 JSON 파일을 읽는 코드)

	// "Alice" 이름을 가진 사용자 필터링
	filtered := filterByName(data.Users, "Alice")
	fmt.Printf("%+v\n", filtered)
}

결론

이것으로 Go에서 JSON 데이터를 필터링하고 검색하는 방법을 알아보았습니다. JSON 파일을 읽고 필요한 데이터를 구조체로 매핑하여 다양한 검색 및 필터링 기능을 구현할 수 있습니다.

관련 문서: Go JSON 패키지