[go] JSON 데이터 합치기

이 글에서는 Go 언어에서 JSON 데이터를 합치는 방법에 대해 알아보겠습니다. JSON 데이터를 다룰 때 여러 소스에서 받아온 데이터를 합쳐야 하는 경우가 있을 수 있습니다. 이를 위해 Go 언어는 편리한 기능을 제공합니다.

1. JSON 데이터 정의

먼저, 합칠 JSON 데이터를 정의합니다. 예를 들어, 다음과 같은 두 개의 JSON 데이터가 있다고 가정해봅시다.

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	data1 := []byte(`{"name": "John", "age": 30}`)
	data2 := []byte(`{"city": "New York", "country": "USA"}`)

	var result map[string]interface{}

	if err := json.Unmarshal(data1, &result); err != nil {
		panic(err)
	}

	if err := json.Unmarshal(data2, &result); err != nil {
		panic(err)
	}

	fmt.Println(result)
}

위 코드에서는 json.Unmarshal 함수를 사용하여 JSON 데이터를 Go 언어에서 처리할 수 있는 형태로 변환하고, 이를 result에 저장합니다.

2. JSON 데이터 합치기

JSON 데이터를 합치는 방법은 여러 가지가 있을 수 있지만, 간단하게 두 개의 데이터를 하나로 합치는 방법을 살펴보겠습니다.

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	data1 := []byte(`{"name": "John", "age": 30}`)
	data2 := []byte(`{"city": "New York", "country": "USA"}`)

	var result map[string]interface{}

	if err := json.Unmarshal(data1, &result); err != nil {
		panic(err)
	}

	if err := json.Unmarshal(data2, &result); err != nil {
		panic(err)
	}

	// JSON 데이터 합치기
	mergedData := map[string]interface{}{
		"person": result,
		"location": map[string]interface{}{
			"city": result["city"],
			"country": result["country"],
		},
	}

	mergedJSON, err := json.Marshal(mergedData)
	if err != nil {
		panic(err)
	}

	fmt.Println(string(mergedJSON))
}

위 코드에서는 mergedData라는 새로운 map을 생성하여 두 개의 JSON 데이터를 합쳐줍니다. 마지막으로 json.Marshal 함수를 사용하여 합쳐진 데이터를 다시 JSON 문자열로 변환합니다.

결론

이렇게 간단한 방법으로 Go 언어에서 JSON 데이터를 합칠 수 있습니다. JSON 데이터를 다뤄야 하는 상황에서는 항상 데이터의 구조와 어떻게 합칠지에 대해 고민해보는 것이 중요합니다. JSON 데이터를 잘 다루어 효율적인 프로그래밍을 할 수 있도록 노력해야 합니다.