[go] Go에서 JSON 값을 정렬하기

이번에는 Go에서 JSON 값을 정렬하는 방법에 대해 알아보겠습니다. 기본적으로 Go의 내장된 encoding/json 패키지를 사용하여 JSON 값을 정렬할 수 있습니다.

JSON Marshal 사용

일반적으로 json.Marshal 함수를 사용하여 Go 구조체를 JSON으로 변환합니다. 하지만 이 함수는 구조체의 필드를 오름차순으로 정렬합니다.

만약 특정 필드를 기준으로 JSON을 정렬하려면, 해당 필드에 태그를 추가하여 직렬화할 때 해당 필드를 특정 기준으로 정렬할 수 있습니다.

아래는 날짜와 숫자 필드를 기준으로 JSON을 정렬하는 예제입니다:

type Person struct {
    Name string
    Age  int
    DOB  time.Time `json:"dob"`
}

func main() {
    p := Person{Name: "Alice", Age: 25, DOB: time.Date(1996, 2, 14, 0, 0, 0, 0, time.UTC)}
    b, err := json.Marshal(p)
    if err != nil {
        fmt.Println("Error:", err)
    }
    fmt.Println(string(b))
}

위의 코드에서 DOB 필드에 json:"dob" 태그를 추가하여 dob를 기준으로 JSON을 정렬하였습니다.

더 복잡한 정렬

더 복잡한 정렬을 위해서는 MarshalJSON 메서드를 사용하여 커스텀 마샬링을 구현할 수 있습니다. 이를 통해 원하는 대로 JSON을 정렬할 수 있습니다.

마무리

Go에서 JSON 값을 정렬하는 방법에 대해 간단히 살펴보았습니다. encoding/json 패키지를 통해 기본적인 정렬을 제공하고, 필요에 따라 커스텀 마샬링으로 더 복잡한 정렬을 구현할 수 있습니다.