[go] 중첩된 JSON 데이터 처리하기
JSON(JavaScript Object Notation)은 데이터를 효율적으로 표현하기 위한 경량의 데이터 형식입니다. JSON 데이터는 계층적으로 중첩될 수 있으며, 이 중첩된 구조를 효과적으로 처리하는 것은 매우 중요합니다.
JSON 데이터 파싱
JSON 데이터를 처리하기 위해서는 먼저 파싱(parsing)하여 데이터를 읽고 쓸 수 있어야 합니다. Go 언어에서는 encoding/json
패키지를 사용하여 JSON 데이터를 파싱할 수 있습니다. 다음은 간단한 JSON 데이터를 파싱하는 예제입니다.
package main
import (
"encoding/json"
"fmt"
"log"
)
func main() {
data := []byte(`{"name": "John", "age": 30, "car": {"model": "BMW", "year": 2021}}`)
var result map[string]interface{}
err := json.Unmarshal(data, &result)
if err != nil {
log.Fatal(err)
}
fmt.Println(result["name"]) // John
fmt.Println(result["age"]) // 30
car := result["car"].(map[string]interface{})
fmt.Println(car["model"]) // BMW
fmt.Println(car["year"]) // 2021
}
위의 예제는 encoding/json
패키지를 사용하여 JSON 데이터를 파싱하고, 중첩된 구조를 처리하는 방법을 보여줍니다.
중첩된 JSON 데이터 처리
중첩된 JSON 데이터를 처리할 때에는 해당 데이터의 구조를 이해하고 적절히 접근해야 합니다. Go의 encoding/json
패키지를 사용하면 중첩된 JSON 데이터를 다루는 것이 간단합니다.
다음은 중첩된 JSON 데이터를 처리하는 예제입니다.
package main
import (
"encoding/json"
"fmt"
"log"
)
func main() {
data := []byte(`{
"store": {
"book": [
{ "title": "Go Programming", "author": "John Doe" },
{ "title": "Python Programming", "author": "Jane Doe" }
],
"bicycle": {
"color": "red",
"price": 200
}
}
}`)
var result map[string]interface{}
err := json.Unmarshal(data, &result)
if err != nil {
log.Fatal(err)
}
books := result["store"].(map[string]interface{})["book"].([]interface{})
for _, book := range books {
fmt.Println(book.(map[string]interface{})["title"]) // Go Programming, Python Programming
fmt.Println(book.(map[string]interface{})["author"]) // John Doe, Jane Doe
}
bicycle := result["store"].(map[string]interface{})["bicycle"].(map[string]interface{})
fmt.Println(bicycle["color"]) // red
fmt.Println(bicycle["price"]) // 200
}
위의 예제는 중첩된 JSON 데이터를 다루는 방법을 보여줍니다. 필요에 따라 적절한 타입으로 형변환하여 데이터에 접근할 수 있습니다.
JSON 데이터는 다양한 형태로 중첩될 수 있으므로, 실제 데이터의 구조에 맞추어 적절한 접근 방식을 선택해야 합니다.
중첩된 JSON 데이터를 처리하는 방법에 대한 좀 더 심화된 내용은 공식 문서에서 확인할 수 있습니다.